【问题标题】: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?我正在将表中的数据导出为 CSV 和 JavaScript 变量。 .但是得到 Error "fputcsv() Expected parameter 2 to be array" 。怎么做?
【发布时间】:2021-12-19 00:20:14
【问题描述】:

这是我的 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

【问题讨论】:

  • 和上面说的差不多。参数 2 应该是一个数组。 foreach ($row as $field =&gt; $value) { 您正在循环单行,这意味着 $field 是一个简单的值,而不是一个数组。所以fputcsv($f, $field) 失败了。
  • 所以没有循环,字段名称只有fputcsv($f, $row)

标签: javascript php html fputcsv


【解决方案1】:

您正在尝试使用字段名称将标题行输出到 CSV。

此代码失败,因为您正在循环遍历 $row 数组并尝试一次写入一个字段标题。

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

你想要的是一个包含字段名称的数组。你可以使用array_keys(),这样你的代码就变成了

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

不需要循环。

【讨论】:

  • 您好,切向垂直,谢谢您的回答。 fputcsv() 错误已解决。但是 csvtrial.php:1 Uncaught SyntaxError: Invalid or unexpected token 错误仍然存​​在。有什么建议吗?
  • @mohan 这是你第一次提到它。问题中没有提到该错误。该错误通常源于缺少分号或未终止的字符串。
猜你喜欢
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 2011-04-07
相关资源
最近更新 更多