2012-08-09 31 views
0

如何以更好的方式做到這一點?如何使用數組來執行字符串循環?

$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?

謝謝!

+1

它可能無助於回答你的問題,但你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果你不確定使用哪一個,[閱讀這篇文章](http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons)。 – Matt 2012-08-09 18:30:47

+0

你是什麼意思「更好的方法」?你的意思是隻有一個查詢? – Tchoupi 2012-08-09 18:31:03

+0

是的,如果可能的話。 – 2012-08-09 18:32:16

回答

3

您的查詢可能是

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

而現在你只需要一個查詢來執行,返回行的每個區域的號碼!

現在你可以使用

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

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

您的陣列請注意應停止使用mysql_*功能執行一些PHP魔術。他們正在被棄用。請使用PDO(自PHP 5.1起支持)或mysqli(自PHP 4.1起支持)。如果您不確定要使用哪一個,請致電read this SO article

+0

感謝馬特,但我沒有我桌上的所有區域。 我想計算,如果有2行與「區域1」或0行與「區域2」... – 2012-08-09 18:39:30

+0

這將允許你這樣做。你只需要看看這些區域是否存在於mysql結果中。如果他們不知道,你知道計數是零。 – Matt 2012-08-09 18:40:17

+0

是啊!你是對的。謝謝!我會看到關於mysqli! – 2012-08-09 18:47:05

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`"; 
+1

@sixeightzero'$ num_rows_example3 = mysql_num_rows($ query);',從OP ...讀取代碼! – orourkek 2012-08-09 18:33:39

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;它會產生區域的計數。

相關問題