通过 PHP 将 MySQL 转换为 JSON

让我前言本带我知道这个问题已经被问很多次,就在这里(即这里的其他页面中)和我已经通过每一个回答的拖网,并试图解决方案,但一直收到一个空的JSON数组。


我有一个 mysql 查询,如下所示:


$myQuery = $wpdb->get_results('SELECT player_name, player_team, 

SUM(ruckContests) AS contests FROM afl_master 

WHERE player_team = "COLL" AND year = 2019 AND ruckContests > 0 

GROUP BY player_id ORDER BY contests DESC LIMIT 2');

此查询的输出如下:


Array ( [0] => stdClass Object ( [player_name] => Brodie Grundy [player_team] => COLL [contests] => 661 ) [1] => stdClass Object ( [player_name] => Mason Cox [player_team] => COLL [contests] => 51 ) )

我想要做的是在 php 中将其转换为以下 json 对象:


{

 player_name: "Brodie Grundy", 

 player_team: "COLL", 

 contests: 661

},

{

 player_name: "Mason Cox", 

 player_team: "COLL", 

 contests: 51

}

我已经尝试mysql_fetch_array()过以及fetch_assoc()使用这里的方法,但无济于事。我很感激任何可用的帮助。


评论中推荐的这个简单解决方案有效:


json_encode($myQuery)


郎朗坤
浏览 204回答 3
3回答

缥缈止盈

只需使用fetch_array()或 (array) $myQuery将结果转换为数组,然后:json_encode($myQuery);json_last_error(); // to see the error

茅侃侃

$JsonData=array();foreach($myQuery as $val){            $JsonData[]='               {                 "player_name": "'.$val->player_name.'",                  "player_team": "'.$val->player_team.'",                  "contests": $val->contests                }             ';}$expectedJson=implode(',',$JsonData);

蛊毒传说

您可以在单个 SQL 语句中执行此操作(为了更好地理解,我刚刚将其格式化为多行)。内部Select语句使用你的查询作为子查询,同时使用 JSON_OBJECT生成每一行的JSON对象,最后使用GROUP_CONCAT将每一行用逗号组合起来,然后将“[”和“]”添加到最终结果中用于创建完美的 JSON 数组。(另一种方式,除了json_encode($myQuery),更简单的版本:) )。SELECT CONCAT('[',     GROUP_CONCAT(         JSON_OBJECT(             'player_name',   player_name,             'player_team' ,  player_team,             'contests', contests)     ) , ']') as json  FROM (        SELECT  player_name,  player_team, SUM(ruckContests) as contests        FROM afl_master         WHERE player_team = "COLL" AND year = 1995 AND ruckContests > 0         GROUP BY player_name, player_team         ORDER BY SUM(ruckContests) DESC         LIMIT 2 ) AS TT
打开App,查看更多内容
随时随地看视频慕课网APP