當前位置: 首頁> 最新文章列表> 用fputcsv() 導出mysqli_result 為文件

用fputcsv() 導出mysqli_result 為文件

M66 2025-05-28

fputcsv()是PHP 的一個內置函數,用於將數組的數據寫入到文件中,並將其格式化為CSV 格式。每一行數組會被轉換為CSV 格式的行,數組中的每個元素會被逗號(或指定的分隔符)分開。

函數原型:

 bool fputcsv ( resource $handle , array $fields [, string $separator = "," [, string $enclosure = "\"" [, string $escape = "\\" ]]] )
  • $handle :目標文件的文件句柄,必須是一個有效的文件資源。

  • $fields :要寫入CSV 文件的數組,通常是一個從數據庫查詢中獲取的結果。

  • $separator :指定分隔符,默認為逗號。

  • $enclosure :指定引用字符,默認為雙引號。

  • $escape :指定轉義字符,默認為反斜杠。

步驟一:連接數據庫並執行查詢

首先,我們需要連接到數據庫並執行查詢,獲取數據。以下是一個基本的mysqli數據庫連接和查詢操作:

 <?php
// 連接數據庫
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database_name";

$conn = new mysqli($servername, $username, $password, $dbname);

// 檢查連接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 執行查詢
$sql = "SELECT id, name, email FROM users";  // 示例查詢
$result = $conn->query($sql);

// 檢查查詢結果
if ($result->num_rows > 0) {
    // 有數據可以導出
} else {
    echo "0 results";
}
?>

步驟二:創建並打開CSV 文件

我們使用fopen()函數創建並打開一個CSV 文件,用於存儲導出的數據:

 <?php
// 打開一個 CSV 文件(如果沒有則創建)
$file = fopen("export.csv", "w");

// 寫入 CSV 文件頭部
$headers = ['ID', 'Name', 'Email'];
fputcsv($file, $headers);
?>

步驟三:將查詢結果寫入CSV 文件

接下來,我們使用fputcsv()將查詢結果逐行寫入CSV 文件中。我們需要使用mysqli_fetch_assoc()或其他函數獲取查詢的每一行數據,並將它們寫入文件:

 <?php
// 逐行读取查询结果并寫入 CSV 文件
while($row = $result->fetch_assoc()) {
    // 将每一行数据寫入 CSV 文件
    fputcsv($file, $row);
}

// 關閉文件
fclose($file);
?>

步驟四:關閉數據庫連接

在導出完成後,記得關閉數據庫連接:

 <?php
// 關閉數據庫連接
$conn->close();
?>

完整代碼示例:

 <?php
// 連接數據庫
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_database_name";

$conn = new mysqli($servername, $username, $password, $dbname);

// 檢查連接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 執行查詢
$sql = "SELECT id, name, email FROM users";  // 示例查詢
$result = $conn->query($sql);

// 檢查查詢結果
if ($result->num_rows > 0) {
    // 打開一個 CSV 文件(如果沒有則創建)
    $file = fopen("export.csv", "w");

    // 寫入 CSV 文件頭部
    $headers = ['ID', 'Name', 'Email'];
    fputcsv($file, $headers);

    // 逐行读取查询结果并寫入 CSV 文件
    while($row = $result->fetch_assoc()) {
        fputcsv($file, $row);
    }

    // 關閉文件
    fclose($file);
    echo "Data has been exported to export.csv";
} else {
    echo "0 results";
}

// 關閉數據庫連接
$conn->close();
?>

完整流程總結:

  1. 連接數據庫:使用mysqli連接到數據庫。

  2. 執行查詢:運行SQL 查詢,獲取mysqli_result結果集。

  3. 創建CSV 文件:使用fopen()打開CSV 文件,並用fputcsv()寫入表頭。

  4. 導出數據:使用fputcsv()循環將每一行數據寫入CSV 文件。

  5. 關閉連接:導出完成後,關閉文件句柄和數據庫連接。

通過這種方式,您可以輕鬆地將數據庫中的數據導出為CSV 文件,便於數據的存儲、遷移或分析。