In PHP wird die Funktion fetch_all () normalerweise verwendet, um alle Ergebnisse einer Datenbankabfrage zu erhalten, die Teil der MySQLI -Erweiterungsbibliothek ist. Wenn Sie diese Funktion verwenden, können Sie den zurückgegebenen Ergebnis -Set -Typ so festlegen, dass die Abfragedaten nach Bedarf verarbeitet werden. Die beiden häufigsten Ergebnismuster sind mySQLi_assoc und mySQLi_Num , der Unterschied zwischen diesen beiden Mustern besteht darin, wie sie Zeilen in der Datenbank in PHP -Arrays umwandeln.
Wenn Sie den Ergebnis -Set -Modus der Funktion fetch_all () auf mySQLi_assoc festlegen, gibt das Ergebnis ein assoziatives Array zurück, in dem die Taste des Arrays der Feldname ist. Angenommen, Sie haben eine Tabelle mit Benutzerdaten. Das Abfrageergebnis lautet wie folgt:
SELECT id, username, email FROM users;
Mit dem MySQLI_Assoc -Modus wird das zurückgegebene Datenformat wie folgt aussehen:
Array(
[0] => Array(
[id] => 1,
[username] => john_doe,
[email] => john@example.com
),
[1] => Array(
[id] => 2,
[username] => jane_smith,
[email] => jane@example.com
)
)
In diesem Modus werden die Daten nach Feldnamen der Spalte organisiert und Sie können über den Feldnamen auf die Daten jeder Spalte zugreifen. Zum Beispiel:
echo $result[0]['username']; // Ausgabe john_doe
Wenn Sie möchten, dass das Ergebnis -Set ein numerisches Indexarray ist, können Sie den MySQLi_Num -Modus verwenden. Dieses Muster wandelt jede Datenzeile in ein nach Zahlen indiziertes Array um, wobei der Indexwert des Arrays der Position der Datenbankspalte entspricht. Wenn Sie beispielsweise die obige Benutzertabelle mit dem MySQLI_NUM -Modus abfragen, ist das Ergebnis wie folgt:
Array(
[0] => Array(
[0] => 1,
[1] => john_doe,
[2] => john@example.com
),
[1] => Array(
[0] => 2,
[1] => jane_smith,
[2] => jane@example.com
)
)
In diesem Modus sind die Daten in der Reihenfolge der Spalten angeordnet, wobei der Index ab 0 beginnt. Sie können beispielsweise über den numerischen Index eines Arrays auf Daten zugreifen:
echo $result[0][1]; // Ausgabe john_doe
Der zweite Parameter der Funktion fetch_all () wird verwendet, um das Schema des Ergebnissatzes anzugeben, das MySQLI_Assoc oder MySQLi_Num sein kann. Wenn Sie ein assoziatives Array (Feldname als Schlüssel) verwenden möchten, setzen Sie den zweiten Parameter auf mySQLi_assoc . Wenn Sie ein numerisches Indexarray verwenden möchten (die Position der Spalte wird als Index verwendet), setzen Sie den zweiten Parameter auf mysqli_num .
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$query = "SELECT id, username, email FROM users";
$result = $mysqli->query($query);
// Gesetzt as MYSQLI_ASSOC
$assoc_result = $result->fetch_all(MYSQLI_ASSOC);
print_r($assoc_result);
// Gesetzt as MYSQLI_NUM
$num_result = $result->fetch_all(MYSQLI_NUM);
print_r($num_result);
$mysqli->close();
?>
Die Auswahl des MySQLI_Assoc- oder MySQLI_NUM -Modus hängt von Ihren Anforderungen für den Datenzugriff ab:
Wenn Sie eher daran gewöhnt sind, Daten nach Feldnamen zu überweisen und das Ergebnis lesbarer zu haben, verwenden Sie mySQLi_assoc .
Wenn Sie eine speichersparendere Art und Weise benötigen oder sich nur um die Reihenfolge der Daten und nicht um die Feldnamen kümmern, ist die Verwendung von mySQLi_Num möglicherweise besser angemessen.
In der tatsächlichen Entwicklung können Sie auf Szenarien stoßen, in denen Sie Daten auf eine Webseite ausgeben und eine URL einfügen müssen. Angenommen, Sie möchten einen Link generieren, der die Datenbankfelder dynamisch einbetten kann, indem Sie die URL erstellen. Wenn Ihr Benutzerformular beispielsweise die persönliche Seiten -URL für jeden Benutzer enthält, können Sie sie so schreiben:
$domain = "http://m66.net/profile/";
$user_id = $result[0]['id'];
$user_url = $domain . $user_id;
echo "<a href='$user_url'>Visit Profile</a>";
Auf diese Weise können Sie für jeden Benutzer einen Link zu Ihrer persönlichen Seite generieren.
Die Funktion fetch_all () ist ein sehr nützliches Werkzeug bei der Behandlung von Abfragenergebnissen. Durch die korrekte Auswahl des Modus von Mysqli_assoc oder MySQLI_NUM können Sie leichter auf Daten zugreifen und verarbeiten. Durch die Auswahl des entsprechenden Ergebnis -Set -Musters können Sie Ihren Code prägnanter, leicht zu verstehen und zu warten.