2010-01-22 75 views
-4
$result = mysql_query("SELECT avg(r.rate) FROM rate r where ImgName='1'"); 

這個php不工作。Php在MYSQL的聚集功能不起作用

本來我的代碼是

<?php 
$con = mysql_connect("localhost","root","sql"); 

if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("photogallery", $con); 

$result = mysql_query("SELECT avg(r.rate) FROM rate r "); 
echo "<table border='0' cellspacing='5'>"; 
echo "<th> Average Rating </td>"; 

while($row = mysql_fetch_array($result)) 
{ 
    echo "<tr>"; 
    echo "<td> " . $row['rate'] . "</td>"; 
    echo "</tr>"; 
} 

echo "</table>"; 

mysql_close($con); 
?> 

上面沒有顯示出任何放。

但修改代碼,即其工作。

$ result = mysql_query(「SELECT r.rate FROM rate r」);

,但我想聚合函數提前

感謝

+2

小心給我們提供任何錯誤? – 2010-01-22 09:14:00

+3

等一會兒,我把我的錯誤日誌占卜的第5級帽子 – 2010-01-22 09:17:22

+0

請編輯您的帖子並粘貼PHP代碼作爲代碼。現在完全不可讀。 PS:設置error_reporting到'E_ALL'並向我們展示'mysql_error()'的結果' – Crozin 2010-01-22 09:27:38

回答

0

您的查詢產生一個標量而不是一組o f行。如果你想獲得每個項目的平均速率,那麼你應該這樣做:

SELECT avg(r.rate) FROM rate r GROUP BY ItemIdColumn 

是的,如果你想獲取的列名的值,你應該使用別名,就像提到knittl。

2

你可以使用一個別名:

SELECT avg(r.rate) AS rate_average 
    FROM rate r 
WHERE ImgName='1' 

,然後輸出:

echo "<td> " . $row['rate_average'] . "</td>"; 
+0

謝謝它的工作 – 2010-01-22 09:57:08

+0

嗯......他不**必須使用別名。該值在'$ row ['avg(r.rate)']'下可用,但使用別名是檢索此值的唯一正常方式。我只是雖然說不「你必須」而不是。 ;) – Crozin 2010-01-22 10:13:22

+0

@cozin更好? ;) – knittl 2010-01-22 12:45:24