没有错误,也没有导出文件。PHP MySQL到CSV
这是我的PHP代码,我知道SQL查询是有效的,我测试了命令以在数据库的数据文件夹中找到新的CSV文件。但是,当我使用MySQL在PHP中运行查询时,没有任何文件出现在任何地方。请有人给我指出正确的方向,或者告诉我我的代码哪里有缺陷没有错误,也没有导出文件。PHP MySQL到CSV,php,mysql,csv,export,Php,Mysql,Csv,Export,这是我的PHP代码,我知道SQL查询是有效的,我测试了命令以在数据库的数据文件夹中找到新的CSV文件。但是,当我使用MySQL在PHP中运行查询时,没有任何文件出现在任何地方。请有人给我指出正确的方向,或者告诉我我的代码哪里有缺陷 <?php $host="localhost"; $user="xxxx"; $password="xxxx"; $dbname="fbclients"; $con = new mysqli($host, $user, $password,
<?php
$host="localhost";
$user="xxxx";
$password="xxxx";
$dbname="fbclients";
$con = new mysqli($host, $user, $password, $dbname)
or die ('Could not connect to the database server' . mysqli_connect_error());
$query = "SELECT * INTO OUTFILE \"contacts10.csv\" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM contacts";
if ($stmt = $con->prepare($query)) {
$stmt->execute();
$stmt->bind_result($field1, $field2, $field3);
while ($stmt->fetch()) {
//printf("%s, %s\n", $field1, $field2, $field3);
}
$stmt->close();
}
//$con->close();
?>
将引号转义
它应该进入OUTFILE\“contacts10.csv\”
。请注意反斜杠,或使用单引号
我不知道这将如何运行而不出错。这不是Perl,这里-您不能让它假定字符串之外的contacts10.csv
意味着什么。替代方法:
将查询输出存储到数组中。并将数组转换为CSV。它会很好用的。我将向您推荐以下代码
$host="localhost";
$user="xxxx";
$password="xxxx";
$dbname="fbclients";
$con = new mysqli($host, $user, $password, $dbname)
or die ('Could not connect to the database server' . mysqli_connect_error());
$query = "SELECT * FROM contacts";
if ($stmt = $con->prepare($query)) {
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=sample.csv');
header('Pragma: no-cache');
header('Expires: 0');
$fp = fopen('php://output', 'w');
$stmt->execute();
$stmt->bind_result($field1, $field2, $field3);
while ($stmt->fetch()) {
fputcsv($fp, $field1);
fputcsv($fp, $field2);
fputcsv($fp, $field3);
}
$stmt->close();
}
fclose($fp);
exit();
对不起,我在发帖前忘了把它们放回去。它对反斜杠也不起作用,我想在没有反斜杠的情况下尝试一下,看看它是否会在这条线附近给我一个错误。还是没什么。这是我第一次将脚本导出到文件,通常我刚刚在myphpadmin中插入并完成转储,但我想让客户端能够下载他们的联系人。对于发布中的错误,我深表歉意。@WereGoingLive修复此问题后,该文件将进入PHP进程的当前工作目录。尝试给出一个绝对路径,如“/tmp/contacts10.csv”。@Borealid,感谢您的快速回复,我现在得到了“警告:mysqli_stmt::bind_result()[mysqli stmt.bind result]:bind变量的数量与第15行[path]中准备语句中的字段数量不匹配”