【问题标题】:PHP - Foreach loop get resultsPHP - Foreach 循环获取结果
【发布时间】:2015-09-18 19:56:08
【问题描述】:

我在下面有这个功能,应该列出我的数据库中存在的所有国家/地区代码,然后计算每个国家/地区代码出现的次数:

function getAvailableCountries(){
    global $dbh;

    $stmt = $dbh->prepare("SELECT country_code,country_name FROM users WHERE country_code!='NA' AND country_name!='NA'");
    $stmt->execute();
    $rows = $stmt->fetchAll();

    foreach ($rows as $row){
        $countryCode =  $row["country_code"];
        $countryName =  $row["country_name"];   
    }

    print "<option value='$countryCode'>$countryName</option>";

}

$countryCode 变量包括:USUSUSUSCA(因为 US 在我的数据库中出现了 4 次,而 CA 出现了一次)($countryName 变量包含国家/地区的名称,格式与上述相同。)

函数然后返回:

<option value="US">United States of America</option>

我的问题是,如何从我的数据库中获取可用的国家/地区,然后将它们打印出来,这样每个国家/地区只出现一次

【问题讨论】:

  • 通过 DISTINCT 或 GROUP BY

标签: php pdo foreach


【解决方案1】:

DISTINCT 添加到您的查询中:

$stmt = $dbh->prepare("SELECT DISTINCT country_code,country_name FROM users WHERE country_code!='NA' AND country_name!='NA'");

您还应该在循环中添加print

foreach ($rows as $row){
    $countryCode =  $row["country_code"];
    $countryName =  $row["country_name"];   
    print "<option value='$countryCode'>$countryName</option>";
}

【讨论】:

  • 谢谢!那成功了。如果数据库中有超过 5 个结果,你能告诉我如何只显示结果吗?
  • 添加HAVING子句
  • 查询会是什么样子? .. AND country_name!='NA' AND HAVING .. ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2014-10-02
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多