如何在PHP中回显count(*)AS的结果?

时间:2012-05-19 18:22:42

标签: php mysql

我使用count(*)AS作为mysql_num_rows()的替代品。 我得到了所有3种反馈(正面,负面和中立)的计数。

但我不知道如何将正反馈的计数分配给我称之为$positive_feedback的变量,然后回应它。如何使用以下示例执行此操作?

我有这个:

SELECT feedback, count(*) AS `count` 
FROM feedback 
WHERE seller='$user' 
GROUP BY feedback

给出了类似的东西:

feedback | count
----------------
positive |   12
neutral  |   8
negative |   3

3 个答案:

答案 0 :(得分:4)

$result = mysql_query($query);  // with your query.

$feedback=array();
while ($row = mysql_fetch_assoc($result)) {
   $feedback[$row['feedback']]=$row['count'];
}

它将给出一个由反馈['正'',反馈['否定']等组成的数组,其中包含存储在每个数据中的计数。

答案 1 :(得分:2)

使用Count(1)而不是Count(*),它更快,因为SQL引擎只能使用计数B-Tree索引中的计数值,并且不需要访问任何其他值。如果您计划进行大量此查询,请确保在 feedback 元组上添加索引。

$query = "SELECT feedback, count(1) AS `count`...";
$result = mysql_query($query, $link); // don't forget to share your db conn

$feedbackArr = new array();
while ($row = mysql_fetch_assoc($result)) {
    $feedbackArr[$row['feedback']] = (int)$row['count'];
}

echo "Positive Feedback: \n";
print_r($feedbackArr);

答案 2 :(得分:1)

使用PDO,它看起来像这样:

$dsn = "mysql:host=%;dbname=%"; // insert your host and dbname

$db = new PDO($dsn, $username, $password); // insert your username and pass

$sql = "
  SELECT 
    feedback, count(*) AS `count` 
  FROM 
    feedback 
  WHERE 
    seller='$user' 
  GROUP BY feedback
";

$feedback = array();
foreach ( $db->query($sql) as $row ) {
  $feedback[ $row['feedback'] ] =  $row['count'];
}

// result in here
print_r ($feedback);