PHP,PDO SQL服务器,从返回数据中删除前导0号

Hik*_*ndo 5 php sql-server pdo slim

我正在研究PHP + Slim Framework.我必须将MySQL迁移到SQL Server.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?
????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

这是代码,

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);
}  
Run Code Online (Sandbox Code Playgroud)

以前,在MySQL中,数据正确返回(例如),

"data" : [
    {
        "item_id" : "1",
        "lat" : "51.42743450",
        "lng" : "-0.72776696"
    }
]
Run Code Online (Sandbox Code Playgroud)

但在使用SQL Server之后,它会像这样(示例)将数据返回给我,

 "data" : [
    {
        "item_id" : "1",
        "lat" : "51.42743450",
        "lng" : "-.72776696"
    }
]
Run Code Online (Sandbox Code Playgroud)

可以看出,从lng切出前导0数.我真的不知道如何解决它.有人可以帮忙吗?非常感谢.

**编辑:Lng数据类型在SQL Server中是DECIMAL(11,8),与MySQL相同

更新

有一种解决方法 - 直接添加0到数据中sprintf().但是,如果我走这条路,问题将无法解决根本原因.但是,在没有适当解决方案的情况下,我会采用这种方式.

Dav*_*nek 1

这是本机客户端驱动程序中的一个已知问题,不幸的是我没有证据表明它已被纠正。尝试以 NVARCHAR 形式返回值