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";
}
?>
我们使用 fopen() 函数创建并打开一个 CSV 文件,用于存储导出的数据:
<?php
// 打开一个 CSV 文件(如果没有则创建)
$file = fopen("export.csv", "w");
// 写入 CSV 文件头部
$headers = ['ID', 'Name', 'Email'];
fputcsv($file, $headers);
?>
接下来,我们使用 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();
?>
连接数据库:使用 mysqli 连接到数据库。
执行查询:运行 SQL 查询,获取 mysqli_result 结果集。
导出数据:使用 fputcsv() 循环将每一行数据写入 CSV 文件。
关闭连接:导出完成后,关闭文件句柄和数据库连接。
通过这种方式,您可以轻松地将数据库中的数据导出为 CSV 文件,便于数据的存储、迁移或分析。