2010-01-22 76 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