0

mysql_num_rows()の代わりにcount(*)ASを使用しています。3種類すべてのフィードバック(ポジティブ、ネガティブ、ニュートラル)のカウントを取得します。

$positive_feedbackしかし、たとえば、正のフィードバックのカウントを、呼び出してエコーする変数に割り当てる方法がわかりません。次の例でこれをどのように行うことができますか?

私はこれを持っています:

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

これはそのようなものを与えます:

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

3 に答える 3

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

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

これは、feedback['positive']、feedback['negative'] などで構成される配列を提供し、それぞれにカウントが格納されます。

于 2012-05-19T18:28:56.223 に答える
2

Count(*) ではなく Count(1) を使用してください。SQL エンジンはカウント B ツリー インデックスからカウント値を使用するだけでよく、他の値にアクセスする必要がないため、高速です。このクエリを大量に作成する予定がある場合は、フィードバックタプルにインデックスを追加してください。

$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);
于 2012-05-19T18:39:46.027 に答える
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);
于 2012-05-19T18:35:37.283 に答える