如何使用数组进行字符串循环?

时间:2012-08-09 18:28:55

标签: php mysql arrays foreach

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

$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);    

也许使用Array和Foreach?

谢谢!

3 个答案:

答案 0 :(得分:3)

您的查询可能是

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

答案 1 :(得分:1)

$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;时,它会产生该区域的计数。

答案 2 :(得分:0)

首先是:

请不要使用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`";