0

私はこのPHPコードを持っています:

$count = "select 
              count(fruit) as total,
              sum(fruit like '%apple%') as apple,
              sum(fruit like '%orange%') as orange
          FROM my_wonderful_table_of_fruits";

$count = mysql_query($count);
$count = mysql_fetch_row($count);

これらを変数に格納しようとしていますが、キャッチできないようです:/

私のコードは次のとおりです。

while ($row = mysql_fetch_array($count)) {
    $count_total = $row['total'];
    $count_apple = $row['apple'];
    $count_orange = $row['orange'];
}

そして、私はそれらを次のようにエコーできることを期待していました:

echo "$count_total[0] is the total of $count_apple apples and $count_orange oranges

MySQL Adminでこのクエリを実行すると、次のような行が表示されます。

total    apple    orange
  5        3         2

誰かが私が間違っていることを知っていますか?(私がmysql_fetch_rowの「邪悪な」バージョンを使用しているという事実を除いて)

とても有難い!

4

2 に答える 2

1

クエリは1行しか生成しないため、次のように簡略化できます。

list($total,$apple,$orange) = mysql_fetch_row(mysql_query("
    SELECT COUNT(`fruit`) AS `total`,
      SUM(`fruit` LIKE '%apple%') AS `apple`,
      SUM(`fruit` LIKE '%orange%') AS `orange`,
    FROM `my_wonderful_table_of_fruits`"));
echo "$total is the total of $apple apples and $orange oranges.";
于 2012-09-04T00:41:58.887 に答える
0

あなたはあなたがしていることを再分析する必要があります。SQLはいくつかの集計結果を含む1行のみを返しますが、結果の複数の行を反復処理できることを期待しているようです(のせいでwhile())。

SQLの機能と、SQLの使用方法は、2つの異なるものです。

于 2012-09-04T00:47:58.190 に答える