PHP / SQLSRV / json_encode。 JSON编码记录数组所需的帮助

时间:2018-09-22 15:50:09

标签: php json sqlsrv

我正在使用以下代码从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 个答案:

答案 0 :(得分:0)

使用Bart的许多指针,答案是json_encode需要UTF-8编码才能起作用。对此的简单答案是对连接字符串进行“ CharacterSet”修改。

$connectionInfo = array( "UID"=>$uid,"PWD"=>$pwd,"Database"=>$database,"CharacterSet"=> "UTF-8");

它使输出为UTF-8,并允许json_encode()像美女一样运行!

再次感谢Bart向我指出正确的调试方向以及您的所有帮助。我希望这个解决方案将来对您也有用。

我觉得你应该为此感到荣誉。

:)