首页 文章

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

提问于
浏览
-1

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

    有很多来自Bart的指针,答案是json_encode需要UTF-8编码才能工作 . 对此的简单回答是在连接字符串中包含“CharacterSet”修改 .

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

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

    再一次,感谢Bart指出我正确的调试方向和所有帮助 . 我希望这个解决方案对你来说也很有用 .

    我觉得你值得赞扬 .

    :)

相关问题