2012-09-30 97 views
0

我基本上只是試圖從表中選擇一個數組...並且它不能正常工作。Mysql select into array

我有以下查詢

$graph = mysql_query("SELECT MONTHNAME(dateadded) MONTH, COUNT(*) COUNT 
FROM products 
WHERE ((YEAR(dateadded)=2012) && (site_url = '$_GET[site_url_graph]')) 
GROUP BY MONTH(dateadded)",$db); 

,我需要的結果是在這樣的一個陣列(可長可短月份名稱那不是問題):

$data = array(
    'Jan' => 12, 
    'Feb' => 25, 
    'Mar' => 0, 
    'Apr' => 7, 
    'May' => 80, 
    'Jun' => 67, 
    'Jul' => 45, 
    'Aug' => 66, 
    'Sep' => 23, 
    'Oct' => 23, 
    'Nov' => 78, 
    'Dec' => 6 
); 

我想這一點,但得到的消息是不是一個數組:

$data = array(); 
while($graphData = mysql_fetch_array($graph)){ 
    $data[] = $graphData; 
    } 

我敢肯定,這是一個簡單的修復,但撕裂^ h空氣在這裏!

+0

你試過在phpmyadmin中運行查詢嗎?你會得到什麼錯誤? – lvil

+1

查詢是好的 –

回答

2

要獲得預期的數組,您需要按照以下方式更改代碼。

$data = array(); 
while($graphData = mysql_fetch_array($graph)){ 
    $data[$graphData['MONTH']] = $graphData['COUNT']; 
} 
+0

非常感謝! –

-1

也許這是問題:
COUNT(*) COUNT」? 嘗試將其更改爲COUNT(*)

+0

號,查詢是好的 - 我認爲錯誤是有問題 –

+1

的最後一部分,你這話是什麼時候「的print_r($ graphData)」 – lvil

0
$graph = mysql_query("SELECT MONTHNAME(dateadded) MONTH, COUNT(*) COUNT 
         FROM products 
         WHERE ((YEAR(dateadded)=2012) && (site_url = '$_GET[site_url_graph]')) 
         GROUP BY MONTH(dateadded)",$db); 

$data = array(); 
while(list($month, $count) = mysql_fetch_array($graph)) { 
    $data[$month] = $count; 
} 

所以,基本上這是你想要的快速和簡潔明快的版本。注意列表的用法。很好,可讀。