簡體   English   中英

沒有錯誤,沒有文件導出。 PHP MySQL轉換為CSV

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM