[英]PHP, PDO SQL server, the leading 0 number is cut from the return data
我正在研究 PHP + Slim Framework。 我必須將 MySQL 遷移到 SQL 服務器。 SELECT語句返回結果有問題。 這是我的示例數據,
╔════╦═══════╦════════════╦════════════╦═══════════════════════╗
║ id ║item_id║ lat ║ lng ║ timestamp ║
╠════╬═══════╬════════════╬════════════╬═══════════════════════╣
║ 1 ║ 1 ║51.42743450 ║-0.72776696 ║2017-07-05 09:54:49.000║
║ 2 ║ 1 ║51.59665507 ║-0.72777098 ║2017-07-05 11:54:49.000║
║ 3 ║ 2 ║51.59664690 ║-0.67272032 ║2016-08-10 10:11:49.000║
║ 4 ║ 2 ║51.59664874 ║-0.67270288 ║2016-08-10 11:05:49.000║
║ 5 ║ 2 ║51.59665167 ║-0.67271587 ║2016-08-10 10:08:49.000║
╚════╩═══════╩════════════╩════════════╩═══════════════════════╝
這是代碼,
public function test(Request $request, Response $response, $args)
{
$query = 'SELECT item_id, lat, lng FROM mySchema.record WHERE item_id = 1';
$sth = $this->db->prepare($query);
$sth->execute();
$rows = $sth->fetchAll();
$data = array('data' => $rows);
return $response->withJson($data);
}
之前在MySQL中,數據是這樣正確返回的(例子),
"data" : [
{
"item_id" : "1",
"lat" : "51.42743450",
"lng" : "-0.72776696"
}
]
但是在使用 SQL 服務器后,它會像這樣(示例)向我返回數據,
"data" : [
{
"item_id" : "1",
"lat" : "51.42743450",
"lng" : "-.72776696"
}
]
可以看出,前導 0 數字是從 lng 中刪除的。 我真的不知道如何解決它。 有人可以幫忙嗎? 非常感謝。
**編輯:SQL 服務器中的 Lng 數據類型為 DECIMAL(11,8),與 MySQL 相同
有一個解決方法 - 通過sprintf()
直接將0
添加到數據中。 但是如果我這樣go,問題將無法解決根本原因。 但是,我會這樣 go 在沒有合適的解決方案的情況下。
也許我來晚了一點,但這已經通過參數化解決了。 這是文檔。
簡短回答:將PDO::SQLSRV_ATTR_FORMAT_DECIMALS
參數設置為true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.