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

问题描述 投票:0回答:4

我有

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 文件中显示所有这些元素?

php mysql arrays csv mysqli
4个回答
3
投票

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

这意味着在

fputcsv($fp, $val);
中,$val 应该是一个数组,但事实并非如此。

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


2
投票

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

$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);

0
投票

阅读文档

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


0
投票

Используй

fputcsv($fp, (array)$val);

© www.soinside.com 2019 - 2024. All rights reserved.