Este es mi código PHP
<?php require_once 'd:\xampp\htdocs\bpr\pdo_db.php'; $sql = "Select ID,FULL_NAMe,AGE from TRIAL"; $csv = get_csv_string($dbh, $sql); echo "<script> var_csv='" . $csv . "' </script>"; function get_csv_string($dbh, $sql) { try { $result = $dbh->query($sql); //return only the first row (we only need field names) $row = $result->fetch(PDO::FETCH_ASSOC); if ($row == null) { return "No Data"; } $f = fopen('php://memory', 'r+'); foreach ($row as $field => $value) { if (fputcsv($f, $field) === false) { return false; } } //second query gets the data $data = $dbh->query($sql); $data->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->getMessage(); } return $csv; }¡Estoy recibiendo el siguiente error!
En lugar de fputcsv(), hice mi propio código. Pero el problema se encuentra cuando guardo el CSV en una variable de JavaScript. ¿Hay alguna otra forma de convertir los datos a CSV y pasarlos a javascript? Convertiré este csv a JSON en el lado del cliente usando javascript
Está intentando enviar una fila de encabezado a CSV con los nombres de los campos.
Este código falla porque está recorriendo la matriz $row e intentando escribir un encabezado de campo a la vez.
foreach ($row as $field => $value) { if (fputcsv($f, $field) === false) { return false; } } Lo que quiere es una matriz con los nombres de los campos. Puede usar array_keys() para eso, por lo que su código se convierte en
if (fputcsv($f, array_keys($row)) === false) return false;No se requiere bucle.