我有
mysql
数据库,其中包含不同的表。表之间的数据是链接的,我使用用户 ID 检索并显示它们。我使用了 PHP MYSQLi 显示数据库中的所有表的参考。我使用 fputcsv($fp, $val)
在 .csv
文件中输出结果,但出现此错误:
警告:fputcsv() 期望参数 2 为 array** 。这是我的代码:
<?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 文件中显示所有这些元素?
“警告:fputcsv() 期望参数 2 为数组,第 17 行给出的字符串”是一条非常有用的消息。
这意味着在
fputcsv($fp, $val);
中,$val 应该是一个数组,但事实并非如此。
$val
是 $row
数组的元素,因此您的查询或数据库中的数据存在问题。
你必须给它一个数组,所以尝试这样
$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);
阅读文档
fputcsv 应该是值数组,你有一个字符串。
Используй
fputcsv($fp, (array)$val);