【问题标题】:Getting PHP error Warning: fputcsv() expects parameter 2 to be array获取 PHP 错误警告:fputcsv() 期望参数 2 为数组
【发布时间】:2015-02-23 05:26:27
【问题描述】:

我有 mysql db 和不同的表。表之间的数据是链接的,我使用用户 ID 检索和显示它们。我使用了来自 PHP MYSQLi Displaying all tables in a databases 的参考。我使用fputcsv($fp, $val) 将结果输出到.csv 文件中,但出现此错误:

警告:fputcsv() 期望参数 2 为数组**。这是我的代码:

<?php

    $con=mysqli_connect("localhost","root","","mytable");

    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $sql = "SELECT user_id FROM tbl_users";
    $users_profile_user_id = mysqli_query($con, $sql); 
    $row = mysqli_fetch_array($users_profile_user_id, MYSQLI_ASSOC);
    $fp = fopen("user_profile_id.csv", "w");

    foreach($row as $val) {
        fputcsv($fp, $val);
    }

    fclose($fp);

?>

我还尝试用 var_export($val) 替换 fputcsv($fp, $val) 并且它只显示数据库中的 1 个条目。现在我知道它为什么会显示错误,因为它显示的是一个字符串,但它的修复方法是什么?如何从数据库中获取所有条目,并在 .csv 文件中显示所有这些元素?

【问题讨论】:

  • 尝试 $row 的 var_dump 看看你会得到什么。
  • 你为什么不让格式化的编辑成为?
  • 尝试了 $row 的 var_dump,但显示相同的错误
  • 禁用该语句/*fputcsv($fp, $val);*/ 并重试。甚至替换它/*fputcsv($fp, $val);*/ var_export($val); 你会更好地理解$val 实际包含的内容。
  • 它只包含 1 个条目。 user_id 包含许多条目。我该如何解决?

标签: php mysql arrays csv mysqli


【解决方案1】:

阅读documentation

fputcsv 应该是值数组,你有一个字符串。

【讨论】:

  • 嗯,没有。的条目。如果我跳过 foreach 并将其假定为字符串,它只会给我 1 个输出,即表中 user_id 的第一个条目,其他条目不会输出。
  • 名气不大,无法评论
【解决方案2】:

“警告:fputcsv() 期望参数 2 是数组,第 17 行给出的字符串”是一个非常有用的消息。

这意味着在fputcsv($fp, $val); 中,$val 应该是一个数组,而它不是。

$val$row 数组的一个元素,因此您的查询或数据库中的数据存在问题。

【讨论】:

  • 我认为这应该是一个评论,因为它不是一个解决方案!这只是一些信息
  • 并非每个答案都是解决方案。我的回答解释了该错误的含义,并给出了从错误消息向后工作以找到实际原因的逻辑。
  • 它只包含 1 个条目。 user_id 包含许多条目。我该如何解决?
【解决方案3】:

你必须给它一个数组,所以试试这样

$sql = "SELECT user_id FROM tbl_users";
$users_profile_user_id = mysqli_query($con, $sql);

$fp = fopen("user_profile_id.csv", "w");

while ($row = mysqli_fetch_assoc($users_profile_user_id)) {
    fputcsv($fp, $row);
}

fclose($fp);

【讨论】:

  • 只是因为您更改了变量名称,代码不起作用!
  • 从 tbl_users 中选择 *。我只需要选择一个特定的列。只有没有。的错误按预期增加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 2018-10-01
  • 2018-07-27
  • 2013-08-30
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
相关资源
最近更新 更多