当前位置: 首页> 最新文章列表> 如何使用 fputcsv() 将 mysqli_result 查询结果导出为 CSV 文件?

如何使用 fputcsv() 将 mysqli_result 查询结果导出为 CSV 文件?

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 文件,便于数据的存储、迁移或分析。