我正在使用以下代码从SQL Server数据库中检索数据:
$sql = "EXEC usp_APIGetJob @Reference='BAX94319',@OrderRef='ORD00156',@JobRef='012363';";
$RS_Result01 = sqlsrv_query($conn,$sql);
$result = array();
do {
while ($row = sqlsrv_fetch_array($RS_Result01,SQLSRV_FETCH_ASSOC)) {
$result[] = $row;
}
}
while (sqlsrv_next_result($RS_Result01));
print_r($result);
print_r输出以下数组:
Array ( [0] => Array ( [SiteId] => 4894 [ClientId] => 2334 [OrderRef] => ORD00156 [JobRef] => 012363 [MovementRef] => 200781 [WeighBridgeRef] => 200801 [WeighBridgeWeight] => 4.560 [PercentFill] => 100 [BreakdownPercentage] => 25 [BreakdownDescription] => Cardboard (packaging) [BreakdownEWC] => 15-01-01 ) )
您可以从数组中看到此数组结构能够显示多行 . 为了简单起见,我只返回了一行([0])来解决这个问题 .
我想使用json_encode()将此输出格式化为JSON,但我很难找到正确的语句/语法来创建JSON格式 .
每当我尝试回显json_encode()时,它都不会产生任何结果(空白输出) .
任何帮助正确格式化json_encode()来编码这个数组,以及它背后的思想的简要概述(所以我可以学习)将不胜感激 .
SQL Server的版本是2012,因此使用SQL Server 2016/2017的新JSON OUTPUT功能不是一种选择 . 我必须用PHP编码 .
亲切的问候
1 回答
有很多来自Bart的指针,答案是json_encode需要UTF-8编码才能工作 . 对此的简单回答是在连接字符串中包含“CharacterSet”修改 .
它使输出UTF-8并允许json_encode()像美女一样运行!
再一次,感谢Bart指出我正确的调试方向和所有帮助 . 我希望这个解决方案对你来说也很有用 .
我觉得你值得赞扬 .
:)