當前位置: 首頁> 最新文章列表> 將mysqli_result 數據導出為CSV 文件

將mysqli_result 數據導出為CSV 文件

M66 2025-05-28

在PHP 中,使用mysqli擴展進行數據庫操作時,我們通常需要將查詢結果導出為CSV 文件。 mysqli_result類用於處理查詢結果集,而要將這些數據導出為CSV 文件,我們需要逐行讀取查詢結果,並將其寫入CSV 文件。本文將詳細講解如何使用mysqli_result函數完成這一操作。

1. 連接數據庫

首先,我們需要建立數據庫連接,確保能夠成功查詢數據。以下是建立連接的代碼示例:

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";

// 創建連接
$conn = new mysqli($servername, $username, $password, $dbname);

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

2. 執行查詢

接下來,執行SQL 查詢並獲取mysqli_result對象。假設我們要查詢一個名為users的表格,查詢所有用戶的姓名和電子郵件。

 <?php
$sql = "SELECT name, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // 數據存在,可以導出
    exportToCSV($result);
} else {
    echo "沒有數據";
}
?>

3. 導出數據為CSV 文件

現在,我們將使用mysqli_result對象,將查詢結果導出為CSV 文件。我們通過fputcsv函數來實現這一功能。

 <?php
function exportToCSV($result) {
    // 設置文件名
    $filename = "users_data_" . date("Y-m-d") . ".csv";

    // 打開輸出流,或者創建並打開一個 CSV 文件
    $output = fopen('php://output', 'w');

    // 設定 HTTP 頭信息,強制瀏覽器下載文件
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');

    // 輸出 CSV 文件的列頭
    $columns = $result->fetch_fields();
    $header = [];
    foreach ($columns as $column) {
        $header[] = $column->name;
    }
    fputcsv($output, $header);

    // 輸出查询结果
    while ($row = $result->fetch_assoc()) {
        fputcsv($output, $row);
    }

    // 关闭輸出流
    fclose($output);
}
?>

4. 完整代碼示例

以下是完整的PHP 代碼,將查詢結果導出為CSV 文件:

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";

// 創建連接
$conn = new mysqli($servername, $username, $password, $dbname);

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

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

if ($result->num_rows > 0) {
    exportToCSV($result);
} else {
    echo "沒有數據";
}

// 導出 CSV 函數
function exportToCSV($result) {
    // 設置文件名
    $filename = "users_data_" . date("Y-m-d") . ".csv";

    // 打開輸出流,或者創建並打開一個 CSV 文件
    $output = fopen('php://output', 'w');

    // 設定 HTTP 頭信息,強制瀏覽器下載文件
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename="' . $filename . '"');

    // 輸出 CSV 文件的列頭
    $columns = $result->fetch_fields();
    $header = [];
    foreach ($columns as $column) {
        $header[] = $column->name;
    }
    fputcsv($output, $header);

    // 輸出查询结果
    while ($row = $result->fetch_assoc()) {
        fputcsv($output, $row);
    }

    // 关闭輸出流
    fclose($output);
}

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

通過上述步驟,我們可以很容易地將MySQL 查詢結果導出為CSV 文件。只要確保連接到數據庫並正確查詢數據,就能通過mysqli_result處理結果並導出。