2012-06-25 113 views
1

我想知道如何從PDO發出查詢並返回一個數組?現在,我有PHP:MySQL查詢返回數組

$DBH = new PDO("mysql:host={$host};dbname={$dbname}", $user, $pass); 

使用foreach循環,像這樣

$query = "SELECT DISTINCT City FROM Locations ORDER BY City"; 
foreach($DBH->query($query)as $row) { 
    echo $row['City'];  
} 

我可以得到打印的所有城市。但是,我想將所有城市存儲到一個數組中。我試圖這樣做

$array = $DBH->query($query); 

但這根本不起作用。有什麼建議麼?

回答

2
$query = "SELECT DISTINCT City FROM Locations ORDER BY City"; 

foreach($DBH->query($query) as $row) { 
    $array[] = $row['City'];  
} 
+0

這可行,但我希望沒有循環的解決方案 –

+0

不是真的可能,你必須以某種方式遍歷結果。如果您不喜歡在您的代碼中查看它,請將其封裝爲函數。但我沒有看到這一點。 – matchdav

0

可能嘗試:

$array = array(); 

foreach($DBH->query($query) as $row){ 
    array_push($array, $row['City']);  
} 

print_r($array); 
+0

感謝您的支持。 – JROB

3

您使用PDO,所以你應該使用PDOStatement::fetchAll()

$stmt = $DBH->query($query); 
$array = $stmt->fetchAll(PDO::FETCH_COLUMN); 

完成 - 而且你沒有使用任何循環。

+0

不僅僅是簡單的'fetchAll()'返回一個嵌套數組而不是一個具有所有'city'值的數組? –

+0

是的,你應該索引。 – matchdav

+1

Psst,' - > fetchALL(PDO :: FETCH_COLUMN);'...... – Wrikken