没有错误,也没有导出文件。PHP MySQL到CSV

没有错误,也没有导出文件。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代码,我知道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();
?>

将引号转义

它应该
进入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]中准备语句中的字段数量不匹配”