【问题标题】:SQL to JSON converts my int to stringSQL to JSON 将我的 int 转换为字符串
【发布时间】:2018-01-26 23:09:25
【问题描述】:

我的 PHP 中有这个。

$sql="select * from defaulttime";

$result = mysqli_query($db, $sql);

while ($row = mysqli_fetch_array($result)){
        $row_set[] = $row;


}
echo trim(json_encode($row_set));

在我的 SQL 中,有些列是整数。但在 JSON 中它显示为字符串。 有人可以告诉我我做错了什么吗?

当我运行 PHP 时,我得到以下结果。 (注意小时和分钟应该是整数)

[{"name":"Test","Hour": "6" ,"Minute":"45"}],

我希望它将字符串显示为字符串,将 Int 显示为 Int。

{"name":"Test","Hour": 6 ,"Minute":45}

【问题讨论】:

  • mysqli_fetch_array 上的 PHP 文档:返回与获取的行相对应的字符串数组,如果结果集中没有更多行,则返回 NULL。
  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db->prepare("…") 过程化接口是 PHP 4 时代引入 mysqli API 时的产物,不应在新代码中使用。
  • 注意:试着改掉在一次性变量中声明 SQL 语句的习惯,这些变量只使用一次。在将查询直接提供给函数的情况下,跟踪代码要容易得多,并且不再有可能搞砸并发送 $sql3 而不是视觉上相似的 $sql8

标签: mysql arrays json


【解决方案1】:

您必须使用 JSON_NUMERIC_CHECK 选项才能获取数值,

看这里:https://lornajane.net/posts/2011/php-returning-numeric-values-in-json

echo trim(json_encode($row_set,JSON_NUMERIC_CHECK));

【讨论】:

    【解决方案2】:

    谢谢大家,

    我通过使用此代码使其工作:

    $result = mysqli_query($db, $sql);
    
    while ($row = mysqli_fetch_array($result)){
            $row_set[] = $row;
    
    
    }
    
    $json=json_encode($row_set,JSON_NUMERIC_CHECK);
    echo $json;
    

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      相关资源
      最近更新 更多