防止 MySQL PDO 以字符串形式返回数字

2022-08-31 01:13:41

我正在使用PHP的PDO来查询MySQL数据库。它将数字和整数作为字符串返回,并且弄乱了我的JSON。

除了逐行对值进行类型转换之外,是否有更好的方法来修复它?

array(2) { 
  ["name"]=> string(11) "Preliminary" 
  ["sell_price"]=> string(6) "864.00"
} 

答案 1

如果您使用的是 php 5.3.3 或更高版本,则可以将其用作执行此操作的第二个参数。JSON_NUMERIC_CHECKjson_encode

请参见:http://us3.php.net/manual/en/function.json-encode.php


答案 2

虽然@Explosion Pills在这种情况下可以满足@user1032531的需求,但它并没有解决问题的第一个来源。

正如您在原始问题中看到的那样,在PHP方面,来自的值已经是一个,尽管正如用户所说,在数据库中它存储为“数字”(我们不知道它是a还是a)。sell_pricestringDECIMALFLOAT

好吧,当将PDO与MySQL一起使用时,可能需要适当的配置才能将“数字”作为“数字”,正如用户@jameshfisher在他的评论中指出的那样。您可以点击他的链接,以获得使其正常工作所需的几乎所有内容。

从这一点来看,接受的答案是有效的,因为如果不使用,无论变量的类型如何,都会将所有内容作为文本发送,并且在使用它时,它会根据猜测而不是原始var的类型将值转换为类型。JSON_NUMERIC_CHECKjson_encode


推荐