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

SQL查询结果正确编码供JavaScript解码及title[0]仅返回首字符问题排查

问题原因

  • 后端调用mysqli_fetch_array($result)拿到的是单条查询结果的一维数组,经过json_encode序列化后返回给前端的结构中,title字段本身就是完整的字符串值,并非存储标题的数组。
  • JavaScript 中直接对字符串使用[索引]语法访问时,会返回该索引位置对应的单个字符,所以你执行myArr.title[0]才会仅返回标题的第一个字符。

解决方法

方案1:仅需获取单条标题的完整内容

直接去掉title后的索引即可,修改前端success回调中的代码:

success:function(html) 
{ 
  const myArr = JSON.parse(html);
  document.getElementById("title").innerHTML = myArr.title;
}

方案2:确实需要将标题存入数组第0位使用

调整后端返回数据的构造逻辑,把title字段的值放到数组中再序列化返回:

if( mysqli_num_rows($result)>0 )
{
  $row = mysqli_fetch_array($result);
  // 自定义返回结构,将title存入数组
  $returnData = [
    'title' => [$row['title']]
    // 其他需要返回的字段可在此处追加
  ];
  echo json_encode($returnData);
}

调整后前端myArr.title[0]即可正常获取完整的标题内容。

额外安全提示

你当前的SQL语句直接拼接用户传入的$username和$orderid参数,存在严重的SQL注入漏洞,建议修改为参数绑定的预处理写法:

$stmt = mysqli_prepare($conn, "SELECT * FROM `permissions` WHERE `username` = ? AND `orderid` = ?");
mysqli_stmt_bind_param($stmt, "ss", $username, $orderid);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:06:02