[英]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.