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

mysqli_fetch_assoc返回"Array"而非MySQL数据库实际数据问题求助

解决MySQL BLOB类型数据导致json_encode为空及遍历输出异常的问题

看起来你遇到了两个典型的PHP处理MySQL混合类型数据的问题:遍历输出成重复的"ArrayArrayArray...",还有json_encode返回空字符串。我来帮你拆解原因和解决办法:

问题1:遍历输出得到"ArrayArrayArray..."

这个问题很简单——你直接echo了整个数组,而PHP中直接echo数组时,会默认输出字符串"Array"。如果循环遍历每条记录都这么做,就会拼接成一串"Array"重复的内容。

解决办法:

遍历结果集时,要么访问数组的具体字段输出,要么用调试函数查看完整结构:

// 假设你的结果集存在$result变量中
while($row = $result->fetch_assoc()) {
    // 方式1:逐个输出字段值
    echo "ID: " . $row['id_field'] . " | 文本内容: " . $row['varchar_field'] . "<br>";
    // 方式2:用print_r查看完整数组结构(调试用)
    print_r($row);
    echo "<hr>";
}

问题2:json_encode返回空字符串

这个问题的核心是JSON无法直接处理二进制数据,而BLOB类型存储的就是二进制内容(可能包含null字节、非UTF-8编码的字节序列),json_encode遇到这些内容会直接返回false,输出时就变成了空字符串。

解决办法:

把BLOB字段的值转成Base64编码(这是JSON兼容二进制数据的标准做法),再进行json_encode:

<?php
header("Content-Type: application/json; charset=UTF-8");
require './connection.php';
$obj = json_decode($_GET["x"], false);

// 补全你的查询语句,这里假设查询包含id、text_col、blob_col三个字段
$imageQuery = $db->prepare("SELECT id, text_col, blob_col FROM your_table WHERE ...");
// 如果有参数需要绑定,记得加上这一步(示例)
// $imageQuery->bind_param("i", $obj->id);
$imageQuery->execute();
$result = $imageQuery->get_result();

$output = [];
while($row = $result->fetch_assoc()) {
    // 将BLOB字段转为Base64编码
    $row['blob_col'] = base64_encode($row['blob_col']);
    // 其他字段如果有非UTF-8编码的情况,也可以转码(可选)
    // $row['text_col'] = mb_convert_encoding($row['text_col'], 'UTF-8', '原编码');
    $output[] = $row;
}

// 处理json_encode可能失败的情况,输出错误信息方便调试
$jsonResult = json_encode($output);
if($jsonResult === false) {
    echo json_encode([
        'success' => false,
        'error' => json_last_error_msg()
    ]);
} else {
    echo $jsonResult;
}

// 记得关闭语句和连接
$imageQuery->close();
$db->close();
?>

额外注意事项

  • Base64编码会让数据体积增加约33%,如果BLOB数据很大,要考虑传输带宽和前端解析的压力
  • 确保所有非BLOB字段的内容都是UTF-8编码,否则json_encode也可能失败,可以用mb_convert_encoding统一转码
  • 调试时可以用json_last_error_msg()查看具体的编码错误原因,快速定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:40:11