[英]Format PHP output from MYSQL for morris.js chart data
我有以下查詢用於檢索我的MYSQL數據庫中的數據:
SELECT a.PARNT_CIVSTATUS,count(a.PARNT_CIVSTATUS) from tbl_parnt a left join tbl_intrvw b
on a.QN_NUMBR=b.QN_NUMBR left join tbl_barangay c on b.ZONE_NUM=c.BRGY_ZONE_NUM
group by a.PARNT_CIVSTATUS
這是phpmyadmin的輸出:
這是在PHP中使用json_encode的輸出:
[
{"0":"L","PARNT_CIVSTATUS":"L","1":"14","count(a.PARNT_CIVSTATUS)":"14"},
{"0":"LSP","PARNT_CIVSTATUS":"LSP","1":"9","count(a.PARNT_CIVSTATUS)":"9"},
{"0":"M","PARNT_CIVSTATUS":"M","1":"4386","count(a.PARNT_CIVSTATUS)":"4386"},
{"0":"N","PARNT_CIVSTATUS":"N","1":"45","count(a.PARNT_CIVSTATUS)":"45"},
{"0":"NON","PARNT_CIVSTATUS":"NON","1":"1","count(a.PARNT_CIVSTATUS)":"1"},
{"0":"O","PARNT_CIVSTATUS":"O","1":"12","count(a.PARNT_CIVSTATUS)":"12"},
{"0":"S","PARNT_CIVSTATUS":"S","1":"681","count(a.PARNT_CIVSTATUS)":"681"},
{"0":"SGP","PARNT_CIVSTATUS":"SGP","1":"143","count(a.PARNT_CIVSTATUS)":"143"},
{"0":"SP","PARNT_CIVSTATUS":"SP","1":"148","count(a.PARNT_CIVSTATUS)":"148"},
{"0":"SPG","PARNT_CIVSTATUS":"SPG","1":"12","count(a.PARNT_CIVSTATUS)":"12"},
{"0":"W","PARNT_CIVSTATUS":"W","1":"239","count(a.PARNT_CIVSTATUS)":"239"},
{"0":"WGW","PARNT_CIVSTATUS":"WGW","1":"1","count(a.PARNT_CIVSTATUS)":"1"},
{"0":"WW","PARNT_CIVSTATUS":"WW","1":"2","count(a.PARNT_CIVSTATUS)":"2"}
]
我不知道如何格式化它:
{ y: 'L', a: 10 },
{ y: 'LSP', a: 75 },
{ y: 'M', a: 50 },
{ y: 'N', a: 75 },
{ y: 'SGP', a: 50 },
{ y: 'SP', a: 75 },
{ y: 'W', a: 57 }
用於morris.js條形圖數據。 如何以這種方式格式化?
這不僅需要對sql進行修改,而且很容易實現。 首先,使用AS關鍵字 ,可以為您引用的列創建別名:
SELECT a.PARNT_CIVSTATUS AS 'y', count(a.PARNT_CIVSTATUS) AS 'a'
FROM tbl_parnt a
LEFT JOIN tbl_intrvw b ON a.QN_NUMBR=b.QN_NUMBR
LEFT JOIN tbl_barangay c ON b.ZONE_NUM=c.BRGY_ZONE_NUM
GROUP BY a.PARNT_CIVSTATUS
假設我做的正確,上面的代碼應該為您提供此輸出 。
但是,這仍然留在php方面。 鑒於您尚未發布php,我將以我所知道的兩種方式解決此問題; 不推薦使用的mysql_*
函數和PDO:
首先, 不推薦使用的功能。 如果您正在使用這些,我強烈建議您不要這樣做,而應改為PDO或mysqli; 無論如何,要代碼!
$arr = array();
while ($row = mysql_fetch_assoc($result)) {
$arr[] = $row;
}
上面使用了mysql_fetch_assoc()
和該文檔頁面中隨附的示例。 假定它們類似於我提供的上述SQLFiddle演示,它將獲取結果的關聯數組,並將其推入現有數組中; 然后,當然可以在json_encode中使用此數組以產生所需的結果。
我講的第二種方法是PDO或php數據對象,這是我支持的方法。 我不會在這里進行完整的演示,因為這超出了此答案的范圍,但是將在PDO中復制以上代碼:
$arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
在這里,我使用fetchAll()
來獲取每一行,並使用常量PDO::FETCH_ASSOC
來確保它僅獲取列名及其值。 否則,您將獲得以上的收益。
當然,有第三個選擇,甚至第四個選擇。 Mysqli,以及一些定制的數據庫抽象層。 我沒有這方面的經驗,因此除了php.net的mysqli快速入門指南之外 ,我將不提供任何示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.