2016-12-28 87 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

這很好。謝謝。 –