-4 votes

La fonction d'agrégation Php dans MYSQL ne fonctionne pas

$result = mysql_query("SELECT avg(r.rate) FROM rate r where ImgName='1'");

ce php ne fonctionne pas.

A l'origine, mon code est le suivant

<?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);
?> 

les données ci-dessus n'indiquent aucun résultat.

mais modifier le code i.e. alors cela fonctionne.

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

mais je veux le faire fonction agrégée

Merci d'avance

2voto

knittl Points 64110

Vous pouvez utiliser un alias :

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

puis la sortie :

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

0voto

AlexB Points 679

Votre requête produit un scalaire plutôt qu'un ensemble de lignes. Si vous voulez obtenir le taux moyen par article, vous devriez faire quelque chose comme :

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

Et oui, si vous voulez récupérer la valeur par nom de colonne, vous devez utiliser un alias, comme l'a mentionné knittl.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X