【问题标题】:How can I use an Array to do an string loop?如何使用 Array 进行字符串循环?
【发布时间】:2012-08-09 18:28:54
【问题描述】:

我怎样才能以更好的方式做到这一点?

$query = mysql_query("SELECT * FROM table WHERE region='example1'");
$num_rows_example1 = mysql_num_rows($query);    

$query = mysql_query("SELECT * FROM table WHERE region='example2'");
$num_rows_example2 = mysql_num_rows($query);    

$query = mysql_query("SELECT * FROM table WHERE region='example3'");
$num_rows_example3 = mysql_num_rows($query);    

也许有一个数组和 Foreach?

谢谢!

【问题讨论】:

  • 这可能无助于回答您的问题,但您应该停止使用mysql_* 函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定要使用哪一个,read this SO article.
  • “更好的方法”是什么意思?你的意思是只有一个查询?

标签: php mysql arrays foreach


【解决方案1】:

您的查询可能是

SELECT region, count(*) as num_regions FROM table GROUP BY region

现在您只需执行一个查询,它会返回每个区域的行数!

现在你可以使用你的数组来执行一些 PHP 魔法

$regions = array('example1', 'example2', 'example3');

foreach ($regions as $region) {
    // do something with the MySQL result
}

请注意您应该停止使用mysql_* 函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定要使用哪一个,请read this SO article

【讨论】:

  • 谢谢马特,但我的桌子上没有所有区域。我想计算是否有 2 行带有“region1”或 0 行带有“region2”...
  • 这将允许您这样做。您只需要查看 mysql 结果中是否存在这些区域。如果他们不这样做,您就知道计数为零。
  • @Rafael 如果您从mysql_* 函数转换,许多mysqli 函数共享相同的命名约定,这可能使您更容易重构。祝你好运!
【解决方案2】:
$query = mysql_query("SELECT region, COUNT(region) AS count FROM table GROUP BY region");

while($row = mysql_fetch_assoc($query)) {
  ${$row[region]} = $row[count];
}

当您echo $example1; 时,它将产生该区域的计数。

【讨论】:

    【解决方案3】:

    首先:

    请不要使用mysql_* 函数来编写新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDOMySQLi。如果你不能决定哪一个,this article 会帮助你。如果你选择 PDO,here is good tutorial

    现在已经不碍事了:

    $query = "SELECT `region`, count(*) AS `count` FROM `table` GROUP BY `region`";
    

    【讨论】:

    • @sixeightzero $num_rows_example3 = mysql_num_rows($query);,来自 OP...阅读代码!
    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2014-11-14
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多