获取 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 为数组的主要内容,如果未能解决你的问题,请参考以下文章