从SQL Server中检索数据并将其转换为json格式?

我正在使用PHP 5.6.0并连接到我的本地SQL Server。 我能够检索数据,但它是一个数组格式。 我想将其转换成json格式。

我得到:

( [date] => 2013-02-05 16:02:02.000000 [timezone_type] => 3 [timezone] => America/New_York ) 

我想要的是:

 ( "date" : "2013-02-05 16:02:02.000000", "timezone_type" : "3", "timezone" : "America/New_York" ) 

这是我的代码:

 $sql = "SELECT * FROM table"; $stmt = sqlsrv_query($conn, $sql); $result = array(); do { while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ $result[] = print_r($row); } } while (sqlsrv_next_result($stmt)); echo json_encode($result); sqlsrv_free_stmt($stmt); sqlsrv_close($conn); 

我的理解是,json_encode应该转换我的数据,但似乎并没有这样工作。

谢谢!

我猜你的代码有两个错误。 第一个是

 $result[] = print_r($row); 

您正在执行一个函数,并在数组中同时推送值。 你应该在这里推数组中的值。 喜欢

 $result[] = $row; 

第二个是在编码之后不打印JSON varibale。 所以你的代码是

 $sql = "SELECT * FROM table"; $stmt = sqlsrv_query($conn, $sql); $result = array(); do { while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){ $result[] = $row; } } while (sqlsrv_next_result($stmt)); sqlsrv_free_stmt($stmt); sqlsrv_close($conn); //Close the connnectiokn first echo json_encode($result); //You will get the encoded array variable 

你的逻辑是非常不正确的尝试这样的:

 $sql = "SELECT * FROM table"; $stmt = sqlsrv_query($conn, $sql); $result = array(); while ($row = mssql_fetch_array($stmt)) { array_push($result, $row); } echo json_enconde($result); sqlsrv_free_stmt($stmt); sqlsrv_close($conn); 

Sql server 2016具有自动将结果集转换为JSON的FOR JSON子句请参阅使用FOR JSON格式化查询结果为JSON(SQL server)