2017-06-16 5 views
1

ich ein PHP-Skript haben:SELECT * FROM `Benutzer` nur erste Benutzer gibt

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

Datenbank 'Benutzer' enthält 29 Einträge, aber ich bin immer dies:

enter image description here

+1

Welchen Datenbankadapter verwenden Sie? PDO/MySQLi? – Dale

+0

Ich verwende PDO-Adapter. – Mikle

+0

Verwenden Sie fetchAll() anstelle von fetch(). –

Antwort

0

mysql fetch() Funktion ruft die nächste Zeile aus einer Ergebnismenge nur 1 Zeile ab, während die Funktion mysql fetchAll() ein Array zurückgibt, das alle Ergebnismengenzeilen enthält.

So fetchAll() verwenden, um alle Datensätze aus resultset zu erhalten, ersetzen Sie diese Zeile

$row = $sql->fetch(); 

mit

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

Dies liegt daran, dass Sie nur einen Datensatz abrufen.

Versuchen Sie den Code wie folgt aus:

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

diese Weise werden Sie eine Reihe von Ergebnissen, so dass Sie eine Schleife über das Array statt über die Eigenschaften.

1

fetch() kehrt einzelnen Elemente. Stattdessen versuchen, mit fetchAll

$row = $sql->fetchAll(); 

fetchAll - Liefert ein Array das gesamte Ergebnis enthalten Satz Reihen

es daher eine Reihe zurückkehren, echo $value und print_r($value)

verwenden entfernen holen - Holt die nächste Zeile aus einer Ergebnismenge nur 1 Zeile

Verwandte Themen