2017-06-16 79 views
1

我有一個PHP腳本:SELECT * FROM`users`只返回第一個用戶

$sql = $db->query("SELECT * FROM `users`"); 
$row = $sql->fetch(); 
foreach($row as $value){ 
    echo $value . "<br>"; 
} 

數據庫 '用戶' 包含29條記錄,但我發現了這一點:

enter image description here

+1

你使用什麼數據庫適配器? PDO/MySQLi? – Dale

+0

我正在使用PDO適配器。 – Mikle

+0

使用fetchAll()而不是fetch()。 –

回答

0

mysql fetch()函數從結果集中只讀取下一行1行,而mysql fetchAll()函數返回一個包含所有結果集行的數組。

因此,使用fetchAll()獲得從結果集的所有記錄,替換該行

$row = $sql->fetch(); 

$row = $sql->fetchAll(); 
4

這是因爲你只取一條記錄。

您可以嘗試這樣的代碼:

$sql = $db->query("SELECT * FROM `users`"); 
$row = $sql->fetchAll(); 
foreach($row as $value){ 
    print_r($value); 
    echo "<br>"; 
} 

這樣你會得到結果的數組,因此循環陣列上,而不是通過性能。

1

fetch()返回單一元素。相反,與fetchAll

$row = $sql->fetchAll(); 

使用fetchall嘗試 - 返回一個包含所有的結果集行

會因此返回一個數組的數組,刪除echo $value和使用print_r($value)

取 - 從結果集中提取下一行僅1行