在PHP 中,使用mysqli擴展進行數據庫操作時,我們通常需要將查詢結果導出為CSV 文件。 mysqli_result類用於處理查詢結果集,而要將這些數據導出為CSV 文件,我們需要逐行讀取查詢結果,並將其寫入CSV 文件。本文將詳細講解如何使用mysqli_result函數完成這一操作。
首先,我們需要建立數據庫連接,確保能夠成功查詢數據。以下是建立連接的代碼示例:
<?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 查詢並獲取mysqli_result對象。假設我們要查詢一個名為users的表格,查詢所有用戶的姓名和電子郵件。
<?php
$sql = "SELECT name, email FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 數據存在,可以導出
exportToCSV($result);
} else {
echo "沒有數據";
}
?>
現在,我們將使用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);
}
?>
以下是完整的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處理結果並導出。