PDO json_encode不起作用,错误在哪里?

时间:2016-04-26 14:19:57

标签: php mysql json pdo

我是第一次尝试这个,所以我的代码完全来自教程,但它不起作用。 我在启用 JSON 1.4.0 的情况下运行 PHP 7

如果我不使用json_encode,我可以打印生成的行,所以我的连接和查询都没问题。

错误报告处于活动状态,但也未输出任何内容。

如果我在我的服务器上运行php文件,我只会得到一个空白页面。

这是我的代码:

error_reporting(-1);

try {
    $conn=new PDO("mysql:host=server.com;dbname=theDB",username,password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare('SELECT * FROM table');
    $stmt->execute();

    header('Content-type: application/json');
    echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));



} catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
}

2 个答案:

答案 0 :(得分:2)

解决方案:(感谢@trincot& @RiggsFolly) 我不得不改变这一行

$ paste <(echo {1..151..50} | tr ' ' $'\n') <(echo {50..200..50} | tr ' ' $'\n')
1   50
51  100
101 150
151 200

$conn=new PDO("mysql:host=server.com;dbname=theDB",username,password);

答案 1 :(得分:1)

json_encode()不会在出错时抛出异常,您必须verify the result yourself

if (json_last_error()!==JSON_ERROR_NONE) {
    echo json_last_error_msg();
    exit;
}

几乎每次这个问题都来自JSON_ERROR_UTF8

  

格式错误的UTF-8字符,可能编码错误