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

将MySQL数据库数据转存至JavaScript数组遇阻,求助排查读取问题

问题分析与解决方案

嘿,我一眼就看出问题出在哪啦!你现在的代码是在循环里每次单独输出一条数据的JSON,这样最终给到前端的是一串不合法的JSON片段(比如像["苹果"]["香蕉"]["橙子"]这样),根本不是一个标准的JSON数组,所以前端没法正确解析。而你手动填充的时候是输出一个完整的数组JSON,所以能正常运行。

修正思路

先把数据库里的所有数据收集到一个PHP数组中,最后一次性把整个数组转成JSON输出,这样前端拿到的就是合法的数组格式了。

修正后的代码(两种写法)

写法1:用循环收集数据

var countries = <?php
require('connection.php');
$query = 'SELECT product_name FROM products';
$result = mysqli_query($conn, $query);

// 先初始化一个空数组用来存所有产品名
$productsList = [];

// 循环读取每一行数据,把产品名加入数组
while($product = mysqli_fetch_array($result, MYSQLI_NUM)){
    // MYSQLI_NUM返回的是索引数组,第一个元素就是product_name
    $productsList[] = $product[0];
}

// 最后一次性输出完整的JSON数组
echo json_encode($productsList);
?>;

写法2:用mysqli_fetch_all更简洁

var countries = <?php
require('connection.php');
$query = 'SELECT product_name FROM products';
$result = mysqli_query($conn, $query);

// 直接获取所有行的索引数组
$allProducts = mysqli_fetch_all($result, MYSQLI_NUM);
// 提取所有行的第一个元素(也就是product_name)组成新数组
$productsList = array_column($allProducts, 0);

// 输出JSON
echo json_encode($productsList);
?>;

额外建议

最好加上错误处理,避免数据库查询失败时输出错误信息破坏JSON格式:

var countries = <?php
require('connection.php');
$query = 'SELECT product_name FROM products';
$result = mysqli_query($conn, $query);

$productsList = [];
if ($result) {
    while($product = mysqli_fetch_array($result, MYSQLI_NUM)){
        $productsList[] = $product[0];
    }
}

echo json_encode($productsList);
?>;

这样修改后,前端就能拿到一个合法的JSON数组,和你手动填充的效果完全一致啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:37:58