gpt4 book ai didi

PHP, PDO SQL server, 返回数据中去掉前导0

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:28 26 4
gpt4 key购买 nike

我正在研究 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║
╚════╩═══════╩════════════╩════════════╩═══════════════════════╝

这是代码,

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 Server 之后,它像这样(示例)向我返回数据,

 "data" : [
{
"item_id" : "1",
"lat" : "51.42743450",
"lng" : "-.72776696"
}
]

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

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

更新

有一个解决方法——通过sprintf() 直接将0 添加到数据中。但如果我这样做,问题将无法解决根本原因。但是,我会在没有合适的解决方案的情况下走这条路。

最佳答案

这是一个 known problem在 native 客户端驱动程序中,不幸的是我没有证据表明它已被更正。尝试返回 value as NVARCHAR

关于PHP, PDO SQL server, 返回数据中去掉前导0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45169761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com