Die Funktion von MySQL_Fetch_array nimmt eine Zeile aus dem als Array eingestellten Ergebnis ein und gibt das Array, das standardmäßig sowohl Assoziation als auch Index enthält, zurück:
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_array($result)) {
print_r($row);
}
Hier ist $ row ein Datensatz, der in jeder Schleife erhalten wird, und der Typ ist ein Array.
Wenn Sie einen Datensatz von MySQL_Fetch_array erhalten, verwenden Sie normalerweise Foreach , um alle Felder dieser Daten zu iterieren:
while ($row = mysql_fetch_array($result)) {
foreach ($row as $key => $value) {
echo "$key => $value<br>";
}
}
Dies ist richtig, da $ row selbst ein Array ist.
Beachten Sie, dass MySQL_Fetch_array einen einzelnen Datensatz zurückgibt und Foreach für Abfrageergebnisressourcen nicht direkt verwenden kann:
foreach ($result as $row) {
// Falsche Verwendung,$resultEs ist eine Ressource,Kein Array
}
Diese Schreibmethode ist falsch und führt zu einem Fehler.
Wenn Sie verwenden möchten , um alle Aufzeichnungen zu durchqueren, besteht die gängige Praxis darin, zuerst alle Ergebnisse in ein Array zu lesen und dann zu überqueren:
$rows = [];
while ($row = mysql_fetch_array($result)) {
$rows[] = $row;
}
foreach ($rows as $record) {
// Verarbeiten Sie jeden Datensatz
echo $record['username'] . "<br>";
}
Auf diese Weise können Sie problemlos alle Datensätze in foreach behandeln.
Das von MySQL_Fetch_array zurückgegebene Array hat standardmäßig sowohl numerische und zugehörige Indizes, was zu einer Datenreduktion führt. Es wird empfohlen, nur assoziative Arrays zu erhalten:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
// $rowEnthält nur assoziative Arrays
}
Auf diese Weise ist das Array einfacher und der Foreach -Traversal bequemer.
<?php
// Stellen Sie eine Verbindung zur Datenbank her
$link = mysql_connect("gitbox.net", "username", "password");
mysql_select_db("testdb", $link);
// Abfragedaten
$result = mysql_query("SELECT id, username, email FROM users");
// Alle Daten lesen
$rows = [];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$rows[] = $row;
}
// verwendenforeachDurch alle Aufzeichnungen iterieren
foreach ($rows as $record) {
echo "BenutzerID: " . $record['id'] . "<br>";
echo "Benutzer名: " . $record['username'] . "<br>";
echo "Post: " . $record['email'] . "<br><hr>";
}
// Schließen Sie die Verbindung
mysql_close($link);
?>