【问题标题】:Retrieving data from SQL Server and turning it into a json format?从 SQL Server 检索数据并将其转换为 json 格式?
【发布时间】:2015-12-05 16:03:05
【问题描述】:

我正在使用 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 应该转换我的数据,但它似乎不是那样工作的。

谢谢!

【问题讨论】:

  • 你为什么使用print_r($row)?这只是一些调试的错字吗?如果不尝试没有 print_r
  • @Styphon 我正在使用 print_r,因为这是我真正可以看到代码的唯一方法。没有它,我会得到一个空白屏幕。
  • 那么你应该使用print_r($row); $result[] = $row;。您当前拥有的内容无效。

标签: php sql-server json angularjs windows


【解决方案1】:

你的逻辑很反常试试这样:

$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);

【讨论】:

【解决方案2】:

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

$result[] = print_r($row); 

您正在执行一个函数并同时将值推送到数组中。您应该在此处将值推入数组中。喜欢

$result[] = $row;

第二个是,在编码后不打印 JSON 变量。所以你的代码是

$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

【讨论】:

  • 感谢您提交@Vineet,但由于某种原因这仍然没有帮助。我有一个空白屏幕。
  • 在脚本末尾调用 die()exit()
【解决方案3】:

Sql Server 2016 具有 FOR JSON 子句,可自动将结果集转换为 JSON,请参阅 Format Query Results as JSON with FOR JSON (SQL Server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多