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

由于您的查询只产生一行,您可以将其简化为以下内容:

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 只会返回包含一些聚合结果的一行,但您似乎希望能够迭代多行结果(由于您的while().

您的 sql 做什么以及您如何尝试使用它是两件不同的事情。

于 2012-09-04T00:47:58.190 回答