Làm cách nào để xuất dữ liệu từ CSV sang PHP và MySQL?

Chào mừng bạn đến với hướng dẫn nhanh và ví dụ về cách xuất dữ liệu từ MYSQL sang CSV trong PHP. Vì vậy, bạn muốn xuất danh sách từ cơ sở dữ liệu? . Hãy để chúng tôi xem qua một ví dụ đơn giản trong hướng dẫn này – Đọc tiếp

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn ví dụ khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

TLDR – TRANG TRÌNH BÀY NHANH

Tải xuống & Ghi chú

 

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã ví dụ như đã hứa

 

GHI CHÚ NHANH

  • Tạo cơ sở dữ liệu thử nghiệm và nhập 1-users.sql
  • Thay đổi cài đặt cơ sở dữ liệu trong 2a-export-download.php2b-export-save.php thành của riêng bạn
  • Chạy 2a-export-download.php để có bản trình diễn khi xuất thành bản tải xuống CSV, 2b-export-save.php để lưu vào tệp CSV trên máy chủ
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

MÃ VÍ DỤ TẢI XUỐNG

Nhấp vào đây để tải xuống mã nguồn ví dụ, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên mã nguồn đó hoặc sử dụng nó trong dự án của riêng bạn

 

XUẤT DỮ LIỆU TỪ MYSQL SANG CSV

Được rồi, bây giờ chúng ta hãy đi vào một ví dụ về cách xuất dữ liệu từ MySQL sang tệp CSV

 

BƯỚC 1) CƠ SỞ DỮ LIỆU NGƯỜI DÙNG GIẢ

1 người dùng. sql

CREATE TABLE `users` (
  `user_id` bigint(20) NOT NULL,
  `user_email` varchar(255) NOT NULL,
  `user_name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`),
  ADD UNIQUE KEY `user_email` (`user_email`),
  ADD KEY `user_name` (`user_name`);

ALTER TABLE `users`
  MODIFY `user_id` bigint(20) NOT NULL AUTO_INCREMENT;
 
INSERT INTO `users` (`user_id`, `user_email`, `user_name`) VALUES
(1, 'Jane Doe', '[email protected]'),
(2, 'Joe Doe', '[email protected]'),
(3, 'John Doe', '[email protected]');

Đối với bản demo này, chúng tôi sẽ sử dụng bảng người dùng đơn giản này chỉ với 3 trường

  • user_id ID người dùng. Khóa chính, tự động tăng
  •  PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    0 Địa chỉ email của người dùng
  •  PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    1 Tên người dùng

 

 

BƯỚC 2A) XUẤT CSV (TẢI XUỐNG TỆP CSV)

2a-xuất-tải xuống. php

 PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
]);

// (B) HTTP CSV HEADERS
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"export.csv\"");
 
// (C) GET USERS FROM DATABASE + DIRECT OUTPUT
$out = fopen("php://output", "w");
$stmt = $pdo->prepare("SELECT * FROM `users`");
$stmt->execute();
while ($row = $stmt->fetch()) { fputcsv($out, $row); }
fclose($out);

Đúng, đó là tất cả những gì được gọi là "khó xuất sang CSV". Sẽ không giải thích từng dòng một, điều này sẽ khá đơn giản

  1. Kết nối với cơ sở dữ liệu, nhớ thay đổi cài đặt thành của riêng bạn
  2. Xuất các tiêu đề HTTP “lưu dưới dạng tệp CSV”
  3. Cuối cùng, chúng tôi tìm nạp người dùng từ cơ sở dữ liệu và xuất chúng bằng cách sử dụng
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    2

 

 

BƯỚC 2B) XUẤT MYSQL SANG CSV (LƯU VÀO TẬP TIN TRÊN MÁY CHỦ)

2b-xuất-lưu. php

 PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
]);

// (B) CREATE EMPTY CSV FILE ON SERVER
$handle = fopen("export.csv", "w");
if ($handle === false) { exit("Error creating $csvFile"); }
 
// (C) GET USERS FROM DATABASE + WRITE TO FILE
$stmt = $pdo->prepare("SELECT * FROM `users`");
$stmt->execute();
while ($row = $stmt->fetch()) { fputcsv($handle, $row); }
fclose($handle);
echo "DONE!";

Thay vào đó, đây là một giải pháp thay thế sẽ lưu tệp CSV vào máy chủ

  1. Kết nối với cơ sở dữ liệu, như bình thường
  2. Tạo và mở tệp CSV trống
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    3
  3. Lấy người dùng từ cơ sở dữ liệu, sử dụng
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    2 để ghi họ vào tệp CSV

 

 

EXTRA) XỬ LÝ HÀNG XUẤT KHẨU LỚN

________số 8_______

Các ví dụ trên hoạt động đủ tốt, nhưng luôn mong đợi mọi thứ trở nên tồi tệ. Đặc biệt khi xuất các tập dữ liệu lớn, tập lệnh PHP rất có thể sẽ mất nhiều thời gian và hết thời gian chờ. Đây là một giải pháp có thể

  1. Chúng tôi có thể sử dụng
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    5 để cho phép tập lệnh chạy vĩnh viễn và
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    6 để tiếp tục chạy ngay cả sau khi người dùng đóng cửa sổ
  2. Người dùng thiếu kiên nhẫn sẽ tải lại búa, khiến nhiều lần xuất xuất hiện. Chúng ta có thể ngăn chặn điều này bằng cách tạo một hình nộm
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    7. Nếu "tệp khóa" này tồn tại, chúng tôi không cho phép người dùng thực hiện một lần xuất khác
  3. Xuất sang tệp CSV như bình thường, nhưng lưu vào ổ đĩa riêng được bảo mật hoặc khu vực được bảo vệ bằng mật khẩu
  4. Khi xuất hoàn tất, hãy gửi email cho người dùng kèm theo liên kết tải xuống
  5. Xóa
     PDO::ERRMODE_EXCEPTION,
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
    ]);
    
    // (B) HTTP CSV HEADERS
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"export.csv\"");
     
    // (C) GET USERS FROM DATABASE + DIRECT OUTPUT
    $out = fopen("php://output", "w");
    $stmt = $pdo->prepare("SELECT * FROM `users`");
    $stmt->execute();
    while ($row = $stmt->fetch()) { fputcsv($out, $row); }
    fclose($out);
    7 để “mở khóa” và cho phép một quy trình xuất khác

 

BIT BỔ SUNG & LIÊN KẾT

Đó là tất cả các ví dụ, và đây là một số tính năng bổ sung nhỏ có thể hữu ích cho bạn

 

LIÊN KẾT và THAM KHẢO

  • Mở tệp – PHP
  • Đặt tệp CSV – PHP
  • Đặt giới hạn thời gian – PHP
  • PDO (Đối tượng cơ sở dữ liệu) – PHP

 

VIDEO HƯỚNG DẪN

 

BẢNG CHEAT INFOGRAPHIC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến phần cuối của hướng dẫn này. Tôi hy vọng rằng nó đã giúp bạn với dự án của bạn và nếu bạn muốn chia sẻ bất cứ điều gì, xin vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc

Làm cách nào để tải tệp CSV excel lên cơ sở dữ liệu bằng php & MySQL?

Nhập/tải dữ liệu tệp CSV lên cơ sở dữ liệu MySQL bằng PHP . Bước 3 – Tạo tệp kết nối cơ sở dữ liệu. Bước 4 – Tạo biểu mẫu HTML để tải tệp CSV lên. Bước 5 – Tạo tệp PHP để nhập dữ liệu tệp Csv vào cơ sở dữ liệu

Làm cách nào để nhập dữ liệu từ csv sang MySQL bằng php?

php $mysqli = new mysqli("localhost", "root", "", "csv-to-mysql"); . csv"; $file = fopen($csvFilePath, "r"); while (($row = fgetcsv($file)). ==

Làm cách nào để xuất dữ liệu MySQL trong tệp csv excel bằng php MySQL?

Xuất dữ liệu sang tệp CSV bằng PHP (exportData. .
Lấy dữ liệu từ cơ sở dữ liệu MySQL
Tạo con trỏ tệp bằng hàm fopen()
Chỉ định các cột tiêu đề và đưa dữ liệu vào tệp CSV
Xuất từng hàng dữ liệu, định dạng dòng dưới dạng CSV và ghi vào con trỏ tệp

Làm cách nào để xuất dữ liệu từ tệp CSV trong php?

Làm cách nào để xuất dữ liệu sang CSV? .
Bước 1. Tạo tiêu đề. .
Bước 2. Buộc bộ đệm đầu ra xuất CSV với một tên tệp cụ thể. .
Bước 3. Tạo một tệp bằng PHP. .
Bước 4. Dọn dẹp bộ đệm đầu ra. .
Bước 5. Viết tiêu đề vào tệp CSV. .
Bước 6. Viết nội dung thực tế vào Tệp CSV