2016-12-28 90 views
-4

我有一个简单的mysql表,其中'ratee'是用户,评级是给予该用户的评级。我想显示该用户被评分的次数以及这些评分的平均值。前者的工作方式如下面的代码所示,但后者没有。请问我哪里错了?我正在使用PHP。在PHP中返回MYSQL平均查询的一个结果

//working 
$sql = "SELECT * FROM ratings WHERE ratee='" . $user1 . "'"; 
$result = mysqli_query($conn, $sql); 
$ratingsqty = mysqli_num_rows($result); 
echo $ratingsqty; 

//not working 1 
$sql = "SELECT * FROM ratings WHERE ratee='" . $user1 . "'"; 
$result = mysqli_query($conn, $sql); 
$rating = mysqli_avg($result); 
echo $rating; 


    //not working 2 
$sql = "SELECT avg(rating) FROM ratings WHERE ratee='" . $user1 . "'"; 
$rating = mysqli_query($conn, $sql); 
echo $rating; 
+1

使用'mysqli_error'找出如果你是收到错误消息。我还建议跳过引用并利用API来防止SQL注入。由于您使用的是mysqli,请利用[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[bind_param](http://php.net/手动/ EN/mysqli的-stmt.bind-param.php)。 – aynber

+0

尝试倾销'mysqli_error($ conn)' –

+0

[** mysqli_avg **不存在。最近的匹配:](http://ca3.php.net/manual-lookup.php?pattern=mysqli_avg&scope=quickref) –

回答

1

mysqli_query()返回一个Mysql结果对象。因此,你不能仅仅回应它。你仍然需要mysqli_fetch_row()或类似的。

0

试试这个

$sql = "SELECT * FROM ratings WHERE ratee='" . $user1 . "'"; 
$result = mysqli_query($conn, $sql); 
$rating = mysqli_fetch_array($result,MYSQLI_ASSOC); 

现在$评级是由这样的数组,你可以打印使用表格
的数据:echo $rating['ratee'];echo $rating['rating'];

对于平均试试这个:

$sql = "SELECT avg(rating) as av FROM ratings WHERE ratee='" . $user1 . "'"; 
    $result = mysqli_query($conn, $sql); 
    $rating = mysqli_fetch_array($result,MYSQLI_ASSOC); 
    echo $rating['av']; 
1

你的问题是,你甚至不打扰通过一个基本的mysqli教程或阅读mysqli文档。

  1. 不工作1:没有这样的功能,如mysqli_avg()。期。
  2. 不工作2:mysqli_query()返回一个mysqli_result object,而不是平均值。您可以使用的mysqli_result object抓取_ *()方法中的一种来获得由MySQL计算的实际平均:

请参见下面的代码:

$sql = "SELECT avg(rating) FROM ratings WHERE ratee='" . $user1 . "'"; //in real life code pls take some measures to prevent sql injection attacks 
$result = mysqli_query($conn, $sql); //in real life code pls check for execution errors 
$rating = $result->fetch_array(MYSQLI_NUM) 
echo $rating[0]; 
+0

这很好。谢谢。 –