#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. @мохан, ты впервые об этом упоминаешь. В вопросе нет ссылки на эту ошибку. Эта ошибка обычно возникает из-за отсутствия точки с запятой или неполной строки.