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を使用しますか?

ありがとう!

4

3 に答える 3

3

あなたのクエリは

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

これで、実行するクエリは1つだけになり、各リージョンの行数が返されます。

これで、次の配列を使用して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以降でサポート)を使用してください。どちらを使用するかわからない場合は、このSOの記事をお読みください

于 2012-08-09T18:31:32.083 に答える
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;それがその地域のカウントを生み出すとき。

于 2012-08-09T18:34:04.847 に答える
0

何よりもまず:

mysql_*関数を使用して新しいコードを記述しないでください。それらはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが表示されますか?代わりに、プリペアドステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。どちらかがわからない場合は、この記事が役に立ちます。PDOを選択した場合は、ここに優れたチュートリアルがあります。

これで邪魔になりません。

$query = "SELECT `region`, count(*) AS `count` FROM `table` GROUP BY `region`";
于 2012-08-09T18:31:39.797 に答える