我正在将数据从 table 导出到 CSV,再到 JavaScript 变量。 .但是出现错误 "fputcsv() expects parameter 2 to be array" 。怎么做?
I am exporting data from table convert to CSV, to JavaScript variable. . But getting Error "fputcsv() expects parameter 2 to be array" . How to do it?
这是我的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;
}
我遇到以下错误!
我编写了自己的代码,而不是 fputcsv()。但是当我将 CSV 保存到 javascript 变量时发现问题。有没有其他方法可以将数据转换为 CSV 并将其传递给 javascript?
我将在客户端使用 javascript
将此 csv 转换为 JSON
您正在尝试使用字段名称将 header 行输出到 CSV。
此代码失败,因为您正在遍历 $row
数组并试图一次写入一个字段 header。
foreach ($row as $field => $value) {
if (fputcsv($f, $field) === false) {
return false;
}
}
您想要的是一个包含字段名称的数组。您可以为此使用 array_keys()
,因此您的代码变为
if (fputcsv($f, array_keys($row)) === false) return false;
不需要循环。
这是我的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;
}
我遇到以下错误!
我编写了自己的代码,而不是 fputcsv()。但是当我将 CSV 保存到 javascript 变量时发现问题。有没有其他方法可以将数据转换为 CSV 并将其传递给 javascript? 我将在客户端使用 javascript
将此 csv 转换为 JSON您正在尝试使用字段名称将 header 行输出到 CSV。
此代码失败,因为您正在遍历 $row
数组并试图一次写入一个字段 header。
foreach ($row as $field => $value) {
if (fputcsv($f, $field) === false) {
return false;
}
}
您想要的是一个包含字段名称的数组。您可以为此使用 array_keys()
,因此您的代码变为
if (fputcsv($f, array_keys($row)) === false) return false;
不需要循环。