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

如何实现AJAX调用PHP读取SQL Server并返回指定JSON结构

解决方法

你需要的JSON结构其实是PHP读取SQL Server结果时默认返回的混合数组格式(同时包含字段名键和数字索引键),下面一步步帮你调整代码实现需求:

关键原理

你给出的目标JSON里,每个对象既有"ID":null这类命名键,又有"0":null这类数字索引键,这正好对应mssql_fetch_array()函数默认返回的关联+索引混合数组(参数为MSSQL_BOTH),所以我们只需要正确收集结果并转成JSON即可。

修改后的完整PHP代码

<?php
// 先设置响应头为JSON格式,确保AJAX能正确解析返回内容
header('Content-Type: application/json; charset=utf-8');

$myServer = '你的SQL Server地址';
$myUser = '数据库用户名';
$myPass = '数据库密码';

// 连接SQL Server
$con = mssql_connect($myServer, $myUser, $myPass) or die("Could not connect to database: ".mssql_get_last_message());
if(!$con) exit;

// 选择目标数据库
mssql_select_db('DB') or die('Could not select a database.');

// 执行查询语句
$SQL = "SELECT * FROM Details WHERE ID='2'";
$result = mssql_query($SQL) or die('An error occurred: ' . mssql_get_last_message());

// 初始化数组存储所有结果行
$responseData = [];

// 循环读取每一行,默认返回混合数组(同时包含字段名和数字索引)
while ($row = mssql_fetch_array($result)) {
    $responseData[] = $row;
}

// 释放结果集并关闭连接
mssql_free_result($result);
mssql_close($con);

// 转成JSON并输出
echo json_encode($responseData);
?>

重要细节说明

  • 响应头设置:必须添加header('Content-Type: application/json; charset=utf-8');,否则AJAX可能无法识别返回内容为JSON格式。
  • 错误处理修正:你原代码里的mysql_error()是MySQL的错误函数,SQL Server要使用mssql_get_last_message(),已经帮你修正。
  • 结果集读取:mssql_fetch_array()默认使用MSSQL_BOTH参数,会同时生成字段名键和数字索引键,完美匹配你需要的JSON结构。
  • 扩展提示:注意mssql扩展已在PHP 7.0及以上版本废弃,建议后续迁移到官方推荐的sqlsrv扩展,用法类似但更稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:24:14