[英]No errors and no file exported. PHP MySQL to CSV
这是我的PHP代码,我知道SQL查询有效,我测试了该命令以在数据库的数据文件夹中找到新的CSV文件。 但是,当我使用MySQL在PHP中运行查询时,没有文件出现在任何地方。 能否请其他人为我指出正确的方向,或者告诉我我的代码有缺陷的地方?
<?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();
?>
转义引号。
它应该是INTO 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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.