2015-07-01 2 views
0

У меня есть эта функция ниже, что должен список все коды стран из моей базы данных, который присутствует, а затем подсчитать, сколько раз каждый код страны присутствует:PHP - Foreach петля получить результаты

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 (с США присутствует 4 раза в моей базе данных и CA присутствует один раз) (переменная $ COUNTRYNAME состоит из названия стран, так же формате, как указано выше.)

функция затем возвращает это:

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

Мой вопрос, хотя, как я могу получить доступные страны из моей базы данных, а затем распечатать их, так что каждая страна только присутствует раз?

+0

Либо DISTINCT или GROUP BY – Robert

ответ

3

Добавить 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>"; 
} 
+0

Спасибо! Это сделал трюк. Можете ли вы сказать мне, как показывать результат только в том случае, если в базе данных имеется более 5 результатов? – oliverbj

+0

Добавить опцию 'HAVING' – Daan

+0

Как будет выглядеть запрос? .. AND country_name! = 'NA' И HAVING ..? – oliverbj

Смежные вопросы