2012-09-30 138 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; 
} 

所以,基本上这是你想要的快速和简洁明快的版本。注意列表的用法。很好,可读。