php
  • pdo
  • foreach
  • 2015-07-01 121 views 0 likes 
    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存在一個時間)(在$國家名稱變量由國家的名字,相同的格式同上。)

    功能然後返回:

    <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!='不適用'並且有...? – oliverbj

    相關問題