亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 PHP 將 MySQL 轉換為 JSON

通過 PHP 將 MySQL 轉換為 JSON

PHP
郎朗坤 2021-06-30 15:47:34
讓我前言本帶我知道這個問題已經被問很多次,就在這里(即這里的其他頁面中)和我已經通過每一個回答的拖網,并試圖解決方案,但一直收到一個空的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)
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

只需使用fetch_array()或 (array) $myQuery將結果轉換為數組,然后:


json_encode($myQuery);

json_last_error(); // to see the error


查看完整回答
反對 回復 2021-07-02
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

$JsonData=array();

foreach($myQuery as $val){



            $JsonData[]='

               {

                 "player_name": "'.$val->player_name.'", 

                 "player_team": "'.$val->player_team.'", 

                 "contests": $val->contests 

               }

             ';

}

$expectedJson=implode(',',$JsonData);


查看完整回答
反對 回復 2021-07-02
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

您可以在單個 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


查看完整回答
反對 回復 2021-07-02
  • 3 回答
  • 0 關注
  • 227 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號