Wenn Sie mit PHP eine Verbindung zu MySQL -Datenbanken herstellen, gibt es viele Möglichkeiten, Fragenergebnisse zu erhalten. Mysql_fetch_array und mysql_fetch_row sind zwei häufig verwendete Funktionen. Sie können alle eine Reihe von Daten aus den Abfrageergebnissen erhalten, aber die zurückgegebene Datenstruktur und die anwendbaren Szenarien sind unterschiedlich. In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen und ihren jeweiligen Anwendungsszenarien ausführlich erläutert.
mysql_fetch_array ()
Diese Funktion nimmt eine Zeile aus dem Ergebnis, die als assoziatives Array, ein numerisches Indexarray oder ein Array mit beiden angegeben ist. Sein Standardverhalten besteht darin, ein Array mit numerischen Indizes und zugehörigen Indizes zurückzugeben.
Syntaxbeispiel:
$row = mysql_fetch_array($result, MYSQL_BOTH);
Der zweite Parameter kann sein:
MySQL_Assoc : Return nur assoziatives Array
MySQL_NUM : Geben Sie nur das numerische Indexarray zurück
MySQL_Both (Standard): Gibt sowohl assoziative als auch numerische Indexarrays zurück
mysql_fetch_row ()
Diese Funktion nimmt eine Zeile aus dem Ergebnissatz und gibt sie als numerisches Indexarray zurück. Das heißt, das Ergebnis kann nur über einen numerischen Index zugegriffen werden und kann nicht mit einem Feldnamen zugegriffen werden.
Syntaxbeispiel:
$row = mysql_fetch_row($result);
Merkmal | mysql_fetch_array | MySQL_Fetch_row |
---|---|---|
Rückgabewerttyp | Arrays, die standardmäßig den numerischen Index + zugeordneter Index zurückgeben (optional) | Gibt das numerische Indexarray zurück |
Zugriffsmethoden | Zugriffsfeldnamen oder numerische Indizes | Nur mit digitalen Indizes zugegriffen |
Speicherverbrauch | Größer (weil das Rückgabearray zwei Indizes enthält) | Kleiner |
Flexibilität | Hoch, geeignet für Szenarien, in denen gleichzeitig numerische Indizes und zugehörige Indizes erforderlich sind | Niedrig, nur für den digitalen Indexzugriff geeignet |
Geeignet für Szenarien, in denen beispielsweise flexibler Zugriff auf Felder erforderlich ist:
Die Daten müssen über den Feldnamen zugegriffen werden, und der Code ist lesbarer
Es ist erforderlich, sowohl numerische Index- als auch Feldnamenindex zu unterstützen, die eine bessere Kompatibilität aufweist
Die Datenmenge wird gelesen und die Speicherverbrauchsanforderungen sind nicht hoch
Beispiel:
$result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "User ID: " . $row['id'] . ", Name: " . $row['name'] . "<br>";
}
Geeignet für Szenarien, in denen die Speicheranforderungen ausschließlich durch digitale Indizes erforderlich sind und nur zugreifen, wie z. B.:
Lesen Sie Big Data in Stapeln, um Speicherplatz zu sparen
Verarbeiten Sie nur die Felddaten in der Reihenfolge, ohne auf Feldnamen zugreifen müssen
Einfache Datenverarbeitung mit hohen Leistungsanforderungen
Beispiel:
$result = mysql_query("SELECT id, name FROM users");
while ($row = mysql_fetch_row($result)) {
echo "User ID: " . $row[0] . ", Name: " . $row[1] . "<br>";
}
Funktion | Vorteil | Mangel |
---|---|---|
mysql_fetch_array | Flexibler Zugriff, gute Code -Lesbarkeit | Nimmt mehr Speicher an |
MySQL_Fetch_row | Niedrige Speicherverwendung, bessere Leistung | Nur auf digitale Indizes zugegriffen, schlechte Code -Lesbarkeit |
// verwenden mysql_fetch_array Holen Sie sich das assoziative Array
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "ID: " . $row['id'] . ", Username: " . $row['username'] . "<br>";
}
// verwenden mysql_fetch_row Holen Sie sich das numerische Indexarray
$result = mysql_query("SELECT id, username FROM users");
while ($row = mysql_fetch_row($result)) {
echo "ID: " . $row[0] . ", Username: " . $row[1] . "<br>";
}
Die MySQL_* -Serie von Funktionen wurde veraltet, und es wird empfohlen, stattdessen die MySQLI- oder PDO -Erweiterung zu verwenden.
Diese veralteten Funktionen sollten in neuen Projekten vermieden werden, um die Sicherheit und Wartbarkeit des Codes zu gewährleisten.