PHP,PDO SQL server,从返回数据中删除前导的0
我正在开发PHP+Slim框架。我必须将MySQL迁移到SQL Server。 SELECT语句的返回结果有问题。 这是我的示例数据PHP,PDO SQL server,从返回数据中删除前导的0,php,sql-server,pdo,slim,Php,Sql Server,Pdo,Slim,我正在开发PHP+Slim框架。我必须将MySQL迁移到SQL Server。 SELECT语句的返回结果有问题。 这是我的示例数据 ╔════╦═══════╦════════════╦════════════╦═══════════════════════╗ ║ id ║item_id║ lat ║ lng ║ timestamp ║ ╠════╬═══════╬════════════╬════════════╬═════════════
╔════╦═══════╦════════════╦════════════╦═══════════════════════╗
║ 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中,数据是这样正确返回的(示例)
但在使用SQL Server之后,它会像下面这样向我返回数据(示例)
可以看出,前面的0号是从lng中删除的。我真的不知道怎么修理它。有人能帮忙吗?非常感谢
**编辑:在SQL Server中,Lng数据类型为十进制(11,8),与MySQL相同
更新
有一种解决方法-通过
sprintf()
直接将0
添加到数据中。但如果我这样做,问题就不会从根本上得到解决。但是,我会这样做,因为目前还没有合适的解决方案。这是本机客户端驱动程序中的一个错误,很不幸,我没有证据表明它已经被纠正。尝试返回如何定义数据字段?lng为十进制(11,8)。与MySQL相同@$sth->fetchAll()的输出是什么?只是为了确保在函数调用过程中不会发生任何事情。@Araw我使用print\u r()来查看它。它是一样的。如果我直接执行它,它工作正常。但是PDO+sqlsrv可能会对数据造成影响。
"data" : [
{
"item_id" : "1",
"lat" : "51.42743450",
"lng" : "-0.72776696"
}
]
"data" : [
{
"item_id" : "1",
"lat" : "51.42743450",
"lng" : "-.72776696"
}
]