Я экспортирую данные из таблицы, конвертированной в CSV, в переменную JavaScript. . Но при получении ошибки «fputcsv() ожидает, что параметр 2 будет массивом» . Как это сделать?

#javascript #php #html #fputcsv

Вопрос:

Это мой PHP-код

 lt;?php require_once 'd:xampphtdocsbprpdo_db.php'; $sql = "Select ID,FULL_NAMe,AGE from TRIAL"; $csv = get_csv_string($dbh, $sql); echo "lt;scriptgt; var_csv='" . $csv . "' lt;/scriptgt;";  function get_csv_string($dbh, $sql) {  try  {  $result = $dbh-gt;query($sql);  //return only the first row (we only need field names)  $row = $result-gt;fetch(PDO::FETCH_ASSOC);  if ($row == null) {  return "No Data";  }  $f = fopen('php://memory', 'r ');  foreach ($row as $field =gt; $value) {  if (fputcsv($f, $field) === false) {  return false;  }  }  //second query gets the data  $data = $dbh-gt;query($sql);  $data-gt;setFetchMode(PDO::FETCH_ASSOC);  foreach ($data as $row) {  if (fputcsv($f, $row) === false) {  return false;  }  } // end record loop  rewind($f);  $csv = stream_get_contents($f);  return rtrim($csv);  } catch (PDOExepction $e) {  return $e-gt;getMessage();  }  return $csv; }  

Я получаю следующую ошибку!

введите описание изображения здесь

введите описание изображения здесь

Вместо fputcsv () я создал свой собственный код. Но проблема, если она обнаружена, когда я сохраняю CSV в переменную javascript. Есть ли какой-либо другой способ преобразовать данные в CSV и передать их в javascript? Я конвертирую этот csv в JSON на стороне клиента с помощью javascript

Комментарии:

1. В значительной степени то, что там написано. Параметр 2 должен быть массивом. foreach ($row as $field =gt; $value) { вы просматриваете одну строку, что означает $field , что это простое значение, а не массив. Так fputcsv($f, $field) что терпит неудачу.

2. Так что никакого цикла и только fputcsv($f, $row) для имен полей.

Ответ №1:

Вы пытаетесь вывести строку заголовка в CSV с именами полей.

Этот код завершается неудачно, потому что вы проходите по циклу через $row массив и пытаетесь написать по одному заголовку поля за раз.

 foreach ($row as $field =gt; $value) {  if (fputcsv($f, $field) === false) {  return false;  }  }   

Вам нужен массив с именами полей в нем. Вы можете использовать array_keys() для этого, чтобы ваш код стал

 if (fputcsv($f, array_keys($row)) === false) return false;  

Петля не требуется.

Комментарии:

1. Привет, Тангенциально перпендикулярный, спасибо за ваш ответ. Ошибка fputcsv() устранена. Но csvtrial.php:1 Неперехваченная ошибка синтаксиса: Недопустимая или неожиданная ошибка токена все еще существует. Есть какие-нибудь предложения?

2. @мохан, ты впервые об этом упоминаешь. В вопросе нет ссылки на эту ошибку. Эта ошибка обычно возникает из-за отсутствия точки с запятой или неполной строки.