In PHP ist PDO (PHP -Datenobjekte) eine leichte Datenbankabstraktionschicht für den Zugriff auf Datenbanken. Durch die Verwendung von PDO kann verschiedene SQL -Abfragen problemlos ausgeführt werden und unterstützt eine Vielzahl von Datenbanksystemen wie MySQL, PostgreSQL, SQLite usw. Die PDOSTATEMENT :: FetchObject -Funktion ist eine sehr leistungsstarke Methode, die von PDO bereitgestellt wird. Es kann die Ergebnisse der Abfrageergebnisse direkt in benutzerdefinierte PHP -Objekte abbilden.
Pdostatement :: fetchObject ist eine Funktion, die eine Reihe von Datensätzen aus den Datenbankabfrageergebnissen übernimmt und sie in ein Objekt ordnet. Im Gegensatz zur Fetch -Methode gibt FetchObject kein assoziatives Array oder Indexarray, sondern ein Objekt zurück. Standardmäßig ist das zurückgegebene Objekt vom Typ STDClass , aber wir können die Abfrageergebnisse dem benutzerdefinierten Objekt abbilden, indem wir den benutzerdefinierten Klassennamen eingeben.
Verwenden Sie zunächst das grundlegende PDO , um eine Verbindung zur Datenbank herzustellen und eine Abfrage auszuführen. Verwenden Sie FetchObject , um das Abfrageergebnis zu erhalten und ein STD -Class -Objekt zurückzugeben:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT * FROM users');
while ($row = $stmt->fetchObject()) {
echo $row->name . "\n"; // Angenommen, es gibt einen im Abfragetabelle name Felder
}
?>
In diesem Beispiel wird $ row ein STD -Class -Objekt sein. Sie können auf Felder von Datenbankdatensätzen zugreifen, genau wie Sie auf die Eigenschaften des Objekts zugreifen können.
Wenn Sie die Abfrageergebnisse einem bestimmten Klassenobjekt zuordnen möchten, können Sie den Namen der Klasse im FetchObject übergeben. Hier erfahren Sie, wie Sie eine benutzerdefinierte Klasse verwenden, um Abfrageergebnisse zu behandeln:
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
while ($user = $stmt->fetchObject('User')) {
echo "ID: " . $user->id . " Name: " . $user->name . " Email: " . $user->email . "\n";
}
?>
In diesem Beispiel ordnet FetchObject ('Benutzer') das Abfrageergebnis einem Objekt der Benutzerklasse ab. Jede Datenzeile erstellt ein Benutzerobjekt , und Sie können über die Objekteigenschaften direkt auf die Daten zugreifen.
Standardmäßig verwendet FetchObject direkt Felder im Abfrageergebnis, um die Eigenschaften des Objekts festzulegen. Wenn Ihre Klasse einen Konstruktor hat, ignoriert PDO die Konstruktorparameter. In diesem Fall können Sie die pdostatement :: setfetchMode -Methode verwenden, um dieses Problem zu lösen. Wenn Sie beispielsweise ein Objekt über einen Konstruktor initialisieren möchten, können Sie die folgende Methode verwenden:
<?php
class User {
public $id;
public $name;
public $email;
public function __construct($id, $name, $email) {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $pdo->query('SELECT id, name, email FROM users');
$stmt->setFetchMode(PDO::FETCH_CLASS, 'User');
while ($user = $stmt->fetch()) {
echo "ID: " . $user->id . " Name: " . $user->name . " Email: " . $user->email . "\n";
}
?>
Durch das Einstellen von PDO :: fetch_class sagen wir PDO, dass wir beim Abrufen von Daten einen benutzerdefinierten Konstruktor verwenden sollten, um das Objekt zu initialisieren.
PDOSTATEMENT :: FetchObject ermöglicht es uns, die Ergebnisse der Abfrageergebnisse einfach in ein Objekt zuzuordnen.
Standardmäßig gibt FetchObject ein STD -Class -Objekt zurück, aber wir können die Abfrageergebnisse auch einem benutzerdefinierten PHP -Klassenobjekt zuordnen, indem wir den Klassennamen angeben.
Wenn Sie das Objekt über einen Konstruktor initialisieren müssen, können Sie die SetFetchMode -Methode verwenden, um den PDO :: Fetch_class -Modus anzugeben.
Mit Pdostatement :: FetchObject können Sie die Ergebnisse der Datenbankabfrage bequem manipulieren und Daten auf objektorientierte Weise verarbeiten.