PHP PDO - 为什么在使用 json_encode 时我的 fetchAll() 将所有值转换为字符串?

Jam*_*Lis 4 php

我正在对表执行全选 SQL 查询,并在 PHP 中准备好的查询中运行它。然后我在 json_encode 中回显结果。结果是将每个值都作为字符串,甚至是 INT 类型的行 ID。如何保留原始值类型?

    $sql = "SELECT * FROM `Type`";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($result);
Run Code Online (Sandbox Code Playgroud)

输出如下:

[{"ID":"1","Type":"Classic Starters","Description":""},{"ID":"2","Type":"Special Starters","Description":""}]
Run Code Online (Sandbox Code Playgroud)

期望的输出如下:

[{"ID":1,"Type":"Classic Starters","Description":""},{"ID":2,"Type":"Special Starters","Description":""}]
Run Code Online (Sandbox Code Playgroud)

提前致谢<3

Lit*_*Zha 6

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题

  • 尝试更清楚地解释为什么这是问题的答案。 (8认同)