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

将MySQL查询结果导入JavaScript数组后格式异常如何解决

问题原因

你不需要手动给数组元素加引号、也不需要手动把数组拼接成字符串,json_encode本身就能把PHP数组直接转换成符合JavaScript语法的数组格式。你当前的写法相当于把一整个逗号分隔的字符串当成了JS数组的唯一元素,所以才会全部显示为一条选项。

代码修改步骤

1. 调整PHP数据处理逻辑

删除手动加引号、拼接字符串的多余操作,直接将查询到的名称存入数组即可:

<?php
$servername = 'localhost';
$username = 'root';
$password = 'password';
$dbname = 'coins';

$conn = new mysqli($servername,$username,$password,$dbname);
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT DISTINCT name FROM uscoins";
$result = $conn->query($sql);
$testarray = array();

while($row = mysqli_fetch_array($result)){
  // 直接存储原始值,不需要手动拼接引号
  $testarray[] = $row['name'];
}

$conn->close();
?>

2. 调整JavaScript赋值逻辑

直接输出json_encode处理后的PHP数组,不需要额外套一层方括号,json_encode输出的内容本身就包含完整的数组结构:

var countries = <?php echo json_encode($testarray); ?>;
autocomplete(document.getElementById("myInput"), countries);

原写法错误说明

你之前生成的$name_string是类似"阿富汗","阿尔巴尼亚","阿尔及利亚"的字符串,用json_encode处理后输出的内容会被转义为一整个字符串,放到[]中后JS得到的数组就只有一个元素,自然无法拆分出独立选项。直接用json_encode处理PHP原生数组,输出的内容和你最开始写的静态数组格式完全一致,既可以正常拆分选项,还能自动转义名称中的特殊字符,避免语法报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 17:54:07