php - 使用php将sql server数据转换为json
问题描述
我的 json 代码没有显示任何内容,我已经尝试了很多代码,但没有任何帮助。
include('connect.php');
$sql = "SELECT * FROM items";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) //this loop is working
{
echo $row['item_id'].", ".$row['item_name'].", ".$row['Barcode']."<br>";
}
$json = array();
do {
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$json[] = $row;
}
} while ( sqlsrv_next_result($stmt) );
echo json_encode($json); //empty?!
sqlsrv_free_stmt( $stmt);
解决方案
这有很多可能的问题:
1)您是否检查过您的查询实际上返回了行?
2)您将数据循环两次(两个while( $row = sqlsrv_fetch_array...
循环),这既无用也无效率。
3)the do...while ( sqlsrv_next_result($stmt) );
子句也应该是不必要的,因为 fetch_array 会知道它什么时候到达数据的末尾,而且你只有一个结果集,所以你不需要在它们之间移动
4)您正在回显原始数据以及 JSON,因此如果您对此脚本进行 ajax 调用,它将失败,因为响应将部分包含非 JSON 数据
我认为这足以为您提供一些明智的数据:
include('connect.php');
$sql = "SELECT * FROM items";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
$json = array();
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
$json[] = $row;
}
echo json_encode($json);
推荐阅读
- typescript - 如何仅检查打字稿中传递对象的键?
- php - Laravel8 tdd:会话缺少预期的关键错误
- javascript - 与嵌入分开发送附件的 Djs 交互
- google-apps-script - 根据第一个单元格值锁定行 - Google 表格
- python - 创建照片时如何创建迷你照片?
- nginx - 无法获取 auth_request 返回的标头和状态码
- karate - 如何为来自数组的每个 json 请求多次调用端点
- c++ - 为构造构造函数声明相同的结构 2 次有什么用?
- python - 如果在扫描 qrcode 后得到相同类型的盒子,我如何增加相同类型盒子的计数?
- kotlin - forEach { } 会自动关闭流吗?