Wenn wir in PHP Datenbankvorgänge ausführen, verwenden wir normalerweise mySQLI_Query () , um die Abfrage auszuführen und das Objekt mySQLi_Result zu verwenden, um das Ergebnis zu erhalten. Wenn Sie die Abfrageergebnisse direkt in Objekte umwandeln möchten, können Sie die Methode mySQLI_Result :: fetch_object () verwenden.
In diesem Artikel werden Sie Schritt für Schritt in die Art und Weise eingehen, wie Sie ihn verwenden und mit einem einfachen Beispiel demonstrieren.
fetch_object () ist eine Methode der MySQLi_Result -Klasse, mit der die aktuelle Zeile aus dem Abfrageergebnis abgerufen und als Objekt zurückgegeben wird. Standardmäßig wird ein Standardobjekt ( STDClass ) zurückgegeben, dessen Eigenschaftsname dem Datenbankfeldnamen entspricht.
Sie können auch einen Klassennamen übergeben, die Methode eine Instanz der angegebenen Klasse zurückgeben und dem Objektattribut den Feldwert zuweisen.
object mysqli_result::fetch_object ([ string $class_name = "stdClass" [, array $params ]] )
$ class_name : Der zu instanziierte Klassenname, der Standardwert ist STDCASS .
$ params : Wenn der Klassenname angegeben ist, kann der Konstruktorparameter übergeben werden.
Angenommen, Sie haben eine Tabelle namens Benutzer . Die Struktur lautet wie folgt:
Ausweis | Name | |
---|---|---|
1 | Alice | alice@m66.net |
2 | Bob | bob@m66.net |
Hier ist der Beispielcode:
<?php
// Stellen Sie eine Verbindung zur Datenbank her
$mysqli = new mysqli("localhost", "username", "password", "database");
// Überprüfen Sie die Verbindung
if ($mysqli->connect_errno) {
echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
exit();
}
// Eine Frage ausführen
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result) {
while ($user = $result->fetch_object()) {
echo "ID: " . $user->id . "<br>";
echo "Name: " . $user->name . "<br>";
echo "Email: " . $user->email . "<br><br>";
}
$result->free();
} else {
echo "Abfrage fehlgeschlagen: " . $mysqli->error;
}
// Schließen Sie die Verbindung
$mysqli->close();
?>
In diesem Beispiel ist jeder Loop $ -Nutzer ein STD -Class -Objekt, das die ID- , Name- und E -Mail -Attribute der aktuellen Zeile enthält.
Sie können auch fetch_object () ein bestimmtes Klassenobjekt zurückgeben lassen, z. B.:
<?php
class User {
public $id;
public $name;
public $email;
public function display() {
echo "[$this->id] $this->name <$this->email><br>";
}
}
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result) {
while ($user = $result->fetch_object('User')) {
$user->display();
}
$result->free();
}
?>
Auf diese Weise erhalten Sie jedes Mal, wenn Sie Schleifen haben, eine Benutzerinstanz und Sie können seine Methoden direkt aufrufen.
Wenn das Abfrageergebnis leer ist, gibt Fetch_object () false zurück.
Wenn ein Klassenname angegeben ist, müssen die Attribute der Klasse öffentlich sein, andernfalls kann der Wert nicht direkt zugewiesen werden.
Fetch_object () extrahiert nur eine Datenzeile gleichzeitig und muss in einer Schleife verwendet werden.