2012-11-20 73 views
0

我試圖檢索列的總和並用JSON解析它。MySQL:當使用JSON解析時,SUM(column)總是返回null

要檢索我使用的總和:

SELECT SUM(price) FROM `Fuelconsumption` WHERE `date` like '%09-2012%' 

當我直接使用此命令爲我的SQL Server中,我得到一個數字結果,當我試圖通過JSON解析它,它不工作。

這是我的JSON和PHP代碼:

case 'getstats': 

        $query="SELECT SUM(price) FROM `Fuelconsumption` WHERE `date` like '%09-2012%'"; 
        $result = mysql_query($query); 

        $json = array(); 
         while($row = mysql_fetch_array($result)) 
         { 
           $json['price']=$row['price']; 
         } 
         print json_encode($json); 
        mysql_close(); 
    break; 

這是我的JS:

xmlhttp = new XMLHttpRequest() 

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     var jsontext = xmlhttp.responseText; 
     var json = JSON.parse(jsontext); 



     console.log(jsontext) 



    } 
} 

xmlhttp.open("GET", "mysql.php?p=getstats" + "&date=09-2012", true); 
xmlhttp.send(); 
+0

嘗試將查詢更改爲'SELECT SUM(price)AS sum_price'而不是 – Abhilash

+0

嘗試以下查詢:'SELECT SUM(\'price \')as \'price \'FROM \'Fuelconsumption \'WHERE \'date 'LIKE'%09-2012%''。 – VisioN

+0

我相信這已經解決了。但是,將來你可以使用'var_dump($ json)'; – andy

回答

2

嘗試

$query="SELECT SUM(price) AS price FROM `Fuelconsumption` WHERE `date` like '%09-2012%'"; 

,而不是

$query="SELECT SUM(price) FROM `Fuelconsumption` WHERE `date` like '%09-2012%'"; 

另外,爲什麼你使用正常的Javascript來創建Ajax請求,而不是jQuery,而你的名字是jQuerybeast? :P

+2

我也想知道 - @ jQuerybeast位,我的意思是:-) – Abhilash

-1

試着改變你的查詢成爲:

SELECT SUM(price) price 
FROM `Fuelconsumption` 
WHERE `date` like '%09-2012%' 
+0

據我所知,您應該使用'AS'創建別名。 – Martin

+1

不,在mysql上,你可以使用隱式別名而不需要as as :) – Habibillah

+0

有趣的是,我已經檢查過了,你是對的!打擾一下! ;) – Martin

1

這是因爲coulmn價格的總和不會被命名價$行,這將是總和(價格)。如果你想確保這個名字,更改與SQL來容納一個別名:

SELECT SUM(price) AS sum_of_price FROM `Fuelconsumption` WHERE `date` like '%09-2012%' 

,然後用它作爲$row['sum_of_price']