You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP从数据库取数据打印时触发Array转字符串报错如何解决

问题出现原因

你调用mysqli_result::fetch_all()方法时,该方法默认返回二维数组:外层数组是查询到的所有行,每一行本身也是一个索引数组(哪怕你只查询了一个Email字段),因此你遍历$rows得到的$row变量实际是长度为1的数组,直接和字符串拼接就会触发数组转字符串的警告,最终输出固定内容Array。

可行解决方法
  • 改动最小方案:直接修改循环内的取值逻辑,取每行数组的第一个元素即可,修改后代码如下:
foreach($rows as $row){
    echo('Data: ' . $row[0] . "<br>");
}
  • 优化返回值方案:修改getData函数,直接返回邮箱字符串组成的一维数组,原有循环代码无需调整即可正常运行,函数修改如下:
function getData($connection)
{
    $query = "SELECT Email FROM SUBSCRIPTIONS";
    $result = $connection->query($query);
    $emailList = [];
    while ($row = $result->fetch_row()) {
        $emailList[] = $row[0];
    }
    return $emailList;
}
  • 高可读性方案:调用fetch_all时指定返回关联数组,后续可以直接按字段名取值,避免索引取值的混淆:
    首先修改getData中的返回语句:
return $result->fetch_all(MYSQLI_ASSOC);

再修改循环取值逻辑:

foreach($rows as $row){
    echo('Data: ' . $row['Email'] . "<br>");
}

内容的提问来源于stack exchange,提问作者Raicha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:27:03