Нет ошибок и файл не экспортируется. PHP MySQL в CSV - PullRequest
0 голосов
/ 01 февраля 2012

Это мой код PHP, я знаю, что SQL-запрос работает, я протестировал команду, чтобы найти новый файл CSV в папке данных базы данных. Однако когда я запускаю запрос в PHP с использованием MySQL, нигде не появляется файл. Может ли кто-нибудь указать мне правильное направление или сказать, где мой код неисправен?

<?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();
?>

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Избегайте кавычек.

Это должно быть INTO OUTFILE \"contacts10.csv\".Обратите внимание на обратную косую черту или используйте одинарные кавычки.

Я не знаю, как это будет работать без ошибок.Здесь не Perl - вы не можете просто предположить, что contacts10.csv вне строки что-то значит.

0 голосов
/ 07 февраля 2017

Альтернативный путь к этому:

сохранить результаты запроса в массиве. И преобразовать массив в 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...