Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql_fetch_array und While-Schleife in PHP

Sie missverstehen grundlegend, wie diese Dinge funktionieren.

Das "Array" in mysql_fetch_array ist kein Array aller Datensätze, sondern ein Array der Daten innerhalb des aktuellen Datensatzes.

In Ihrem Fall rufen Sie nur ein einzelnes Feld ab, sodass das Array nur ein einzelnes Element enthält (dh $row[0] ), aber das Prinzip ist dasselbe – es ist ein Array des einzelnen Datensatzes, den Sie gerade gelesen haben.

Nur die Daten für den aktuellen Datensatz befinden sich gleichzeitig im Array. Dafür steht while Schleife ist für; es geht zurück jeder lädt jeden Datensatz einen nach dem anderen.

Wenn Sie ein Array erstellen möchten, das alle Daten enthält, müssen Sie dies folgendermaßen tun:

$fullData = array()
while($row = mysql_fetch_array($tableIndex) ){
    $fullData[] = $row[0];
}

Dadurch werden alle Daten, die Sie lesen, in einem einzigen großen Array abgelegt, was Sie erwarten. Jetzt können Sie tun, was Sie in der Frage tun wollten:

echo $fullData[0].'<br>';
echo $fullData[1].'<br>';
echo $fullData[2].'<br>';

Hoffe das hilft.

An dieser Stelle sei darauf hingewiesen, dass mysql_xxx() Funktionsfamilie sind veraltet und gelten als veraltet. Wenn Sie gerade PHP lernen (was der Fall zu sein scheint), empfehle ich Ihnen dringend, mit dem Erlernen dieser Funktionen aufzuhören und sich mit dem PDO vertraut zu machen Bibliothek statt. Es ist moderner und hat viele Funktionen als mysql Funktionen nicht bereitstellen können. Außerdem werden zukünftige Versionen von PHP mysql entfernen vollständig funktioniert, so dass Sie irgendwann umsteigen müssen – vielleicht jetzt, während Sie noch lernen.

Außerdem (um die Dinge für die Frage relevant zu halten) hat die PDO-Bibliothek eine Funktion, die tatsächlich das tut, wonach Sie in einer einzigen Funktion suchen:PDO::fetchAll() . Die Verwendung dieser Methode bedeutet, dass Sie können Alle Daten in einem einzigen großen Array in einer Zeile abrufen, ohne dass eine While-Schleife ausgeführt werden muss. Der Code würde etwa so aussehen:

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
$result = $sth->fetchAll();

(Beispiel aus dem PHP-Handbuch für PDO::fetchAll )