2016-11-22 40 views
0

这是表添加所有行的值在PHP

store_reviews

id rev_star 
1  2 
2  5 
3  4 

我想要做的是让所有的行和列(平均)喜欢的计数加星和鸿沟2+5+4/3

我写了一个代码,但它并没有得到所有行补充说。

<?php 
      $stmtrev = $mysqli->prepare("SELECT * FROM store_reviews WHERE store_id=?"); 
      $stmtrev->bind_param("i", $_GET['storeid']); 
      $stmtrev->execute(); 
      $revrows = $stmtrev->get_result(); 
      $stmtrev->close(); 
      $total=0; 
      while ($stars = $revrows->fetch_assoc()) 
      { 
      $count = ($total + $stars['rev_star']); 
      } 
      $count/count($revrows->fetch_assoc()); 
     ?> 

任何人都可以解释什么是错的,什么可以做?

+0

你有没有调试'$星星= $ revrows-> FETCH_ASSOC()'来看看你得到的所有行一样,如果你运行此查询到你有你数据库? –

+0

我得到了所有的行!数据即将到来!但是添加所有行的rev_star列数据是问题! – Alexis

回答

0

这是那些地方你的数据库可以做的工作之一,你

SELECT AVG(rev_star) as average, 
FROM store_reviews 
WHERE store_id=? 

至于为什么PHP脚本无法正常工作,您要统计数据库中的列数,不是行数。更糟糕的是,你在通过完整的结果堆栈之后尝试从结果堆栈中弹出结果集来完成此操作。结果对象告诉你有多少行被返回

$total = 0; 
while ($stars = $revrows->fetch_assoc()) $total += $stars['rev_star']; 
$avg = $total/$revrows->num_rows; 
+0

非常感谢您的解释。 :) – Alexis