防止MySQL PDO将数字作为字符串返回

时间:2012-08-22 16:36:06

标签: php mysql pdo

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

除了逐行输入值之外,还有更好的方法来修复它吗?

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

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

虽然@Explosion Pills在这种情况下适用于@ user1032531的需要,但它并没有解决问题的第一个来源。

正如您在原始问题中所看到的,在PHP端,sell_price的值已经是string,但是,正如用户所说,在数据库中它存储为“数字” (我们不知道它是DECIMAL还是FLOAT

好吧,当使用PDO与MySQL时,可能需要正确的配置才能将“数字”作为“数字”,正如用户@jameshfisher在他的评论中指出的那样。您可以关注his link,以获得使其正常运行所需的一切。

从那里开始,接受的答案是有效的,因为不使用JSON_NUMERIC_CHECK json_encode,无论变量的类型如何,都会将所有内容作为文本发送,并且在使用它时它将转换值基于猜测而不是原始变种类型的类型。