Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO json_编码不工作,错误在哪里?_Php_Mysql_Json_Pdo - Fatal编程技术网

Php PDO json_编码不工作,错误在哪里?

Php PDO json_编码不工作,错误在哪里?,php,mysql,json,pdo,Php,Mysql,Json,Pdo,我是第一次尝试这个,所以我的代码完全来自教程,但它就是不起作用。 我在启用JSON 1.4.0的情况下运行PHP7 如果不使用json_encode,我可以打印结果行,这样我的连接和查询就可以了 错误报告处于活动状态,但也不输出任何内容 如果我在服务器上运行php文件,我只会得到一个空白页面 这是我的密码: error_reporting(-1); try { $conn=new PDO("mysql:host=server.com;dbname=theDB",username,pas

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

如果不使用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();
}
解决方案:(谢谢@trincot&@riggsfully) 我不得不改变这条线路

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

json\u encode()
不会在出现错误时引发异常,您必须:

几乎每次这个问题出现在这里都是
JSON\u错误\u UTF8

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


添加
ini\u集('display\u errors',1)
添加到您的代码或查看错误日志。@bub PHP中的
-1
将打开,但它们可能不会显示。尝试连接后,您正在设置异常模式。默认情况下,pdo不会引发异常,因此如果连接失败,它不会引发异常,因为异常尚未启用。请在末尾添加。添加
;PDO连接字符串中的charset=utf-8
。@JayBlanchard:d'oh。正确的。。。我要去喝点咖啡。
$conn=new PDO("mysql:host=server.com;dbname=theDB;charset=UTF8",username,password);`
if (json_last_error()!==JSON_ERROR_NONE) {
    echo json_last_error_msg();
    exit;
}