获取 PHP 错误警告:fputcsv() 期望参数 2 为数组

Posted

技术标签:

【中文标题】获取 PHP 错误警告:fputcsv() 期望参数 2 为数组【英文标题】:Getting PHP error Warning: fputcsv() expects parameter 2 to be array 【发布时间】: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 包含许多条目。我该如何解决? 【参考方案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 中选择 *。我只需要选择一个特定的列。只有没有。的错误按预期增加。

以上是关于获取 PHP 错误警告:fputcsv() 期望参数 2 为数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 使用 fputcsv 高效地写入和输出 csv 文件

将警告视为错误

PHP fputcsv 编码

php使用fputcsv进行大数据的导出

php fputcsv 读取不到中文文件数据

PHP 警告:in_array() 期望参数 2 是数组,字符串在