在 PHP 7.0 中编码多维数组不起作用 (json_encode)
Posted
技术标签:
【中文标题】在 PHP 7.0 中编码多维数组不起作用 (json_encode)【英文标题】:encoding multidimensional array in PHP 7.0 doesn't work (json_encode) 【发布时间】:2018-01-06 04:59:26 【问题描述】:我在从 mysql phpmyadmin(4.0 版)表中获取 JSON 数据时遇到问题,我尝试过 PDO 和 mysql_connect。
我的想法:mysql--> PHP--> echo json
与我的服务器的连接正常,并且 SQL 语句运行良好。我已经测试过了。但是 JSON 本身的“json_encode”(和其他一些)是不可能的。 json数组没有建好。
PhpMyAdmin 中有需要注意的设置吗?
PDO:
$query = $pdo->prepare('SELECT p.*, count(r.rate) AS rates, avg(r.rate) AS average from plugins p left join rate r on p.title = r.title group by p.title');
$query->execute();
$row = $query->fetchAll();
// send the data encoded as JSON
$json = json_encode($row, JSON_UNESCAPED_UNICODE);
echo $json;
print_r($row);
exit;
结果是:
Array ( [0] => Array ( [id] => 153 [0] => 153 [title] =>
我哪里错了?我将我的服务器更新到 PHP 7.0,现在代码不起作用。在更新之前一切正常,并且有一个很长的 json 数组(应该如何)
应该怎样
"id":"1","title":"ExmapleTitle"....,"id":"2","title":"ExmapleTitle2".......
【问题讨论】:
为什么同时使用mysqli和pdo?选择一个;-) 获取什么?预期结果和当前结果是什么? 在 php7 json_encode 仅适用于 utf8,您的响应中有什么不是吗?否则会失败 代码的哪一部分不起作用?$json_array
和/或 $data
是空的吗?您确定您的查询是正确的并且正在正确执行吗?
PDO 和 mysqli 脚本位于我网页的不同文件中(我已经测试了很多可能性)。我想将我的 MYSQL phpmyadmin 数据库转换为 utf8 json。我认为制作这样的json数组存在问题。脚本什么都不做。没有错误或其他
【参考方案1】:
你必须调用execute()
<?php
$pdo = new PDO('mysql:host=xxxxx;dbname=xxxxx', 'xxxxxx', 'xxxxxx');
$statement=$pdo->prepare("SELECT p.*, count(r.rate) AS rates, avg(r.rate) AS average from plugins p left join rate r on p.title = r.title group by p.title");
$statement->execute(); // <<< --- You are missing this
$data = $statement->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($data); //Echo: data ... voila
【讨论】:
谢谢。我纠正它。但是我有一个多维数组并且编码不起作用: PHP 用 print_r.... 打印出来 Array ( [0] => Array ( [id] => 153 [0] => 153 [title] => 111 墨刷 [1] => 111 墨刷 [链接] => myphotoshopbrushes.com/brushes/id/3516 [2] => myphotoshopbrushes.com/brushes/id/3516 [数据] => Ink111.abr [3] => Ink111.abr [文本] 我不明白你为什么说编码不起作用。您是说希望以特定方式格式化 JSON? 如果您希望 JSON 以特定方式格式化,则循环遍历数据并按照您的需要进行格式化。也许您应该添加一个示例输出,您希望 JSON 的外观如何。 取决于您希望输出的格式。如果您提供完整的 print_r 输出和您要实现的目标的示例,我可以帮助您实现目标。就目前而言,没有足够的信息来提供全面的答案。 @CSSMaster 您的代码中似乎缺少PDO::FETCH_ASSOC
方法的 PDO::FETCH_ASSOC
参数。添加它,JSON 应该就是您要查找的内容。以上是关于在 PHP 7.0 中编码多维数组不起作用 (json_encode)的主要内容,如果未能解决你的问题,请参考以下文章