Die PHP Data Objects (PDO)-Erweiterung definiert eine schlanke, konsistente Schnittstelle für PHP für den Zugriff auf Datenbanken.
PDO bietet eine Abstraktionsschicht für den Datenzugriff. Dies bedeutet, dass unabhängig von der verwendeten Datenbank dieselben Funktionen (Methoden) zum Abfragen und Abrufen von Daten verwendet werden können.
PDO wird mit PHP5.1 veröffentlicht und kann auch in der PECL-Erweiterung von PHP5.0 verwendet werden, ist jedoch nicht auf früheren PHP-Versionen lauffähig.
Sie können über die PHP-Funktion phpinfo() überprüfen, ob die PDO-Erweiterung installiert ist.
Unter Unix oder Linux müssen Sie die folgende Erweiterung hinzufügen:
extension=pdo.so
PDO und alle wichtigen Treiber werden mit PHP als gemeinsame Erweiterungen ausgeliefert. Um sie zu aktivieren, bearbeiten Sie einfach die Datei php.ini und fügen Sie die folgende Erweiterung hinzu:
extension=php_pdo.dllDarüber hinaus gibt es verschiedene Datenbankerweiterungen, die den folgenden entsprechen:
;extension=php_pdo_firebird.dll;extension=php_pdo_informix.dll;extension=php_pdo_mssql.dll;extension=php_pdo_mysql.dll;extensio n=php_pdo_oci.dll;extension=php_pdo_oci8.dll;extension=php_pdo_odbc.dll;extension=php_pdo_pgsql.dll;extension=php_pdo_sqlite.dll
Nachdem wir diese Konfigurationen vorgenommen haben, müssen wir PHP oder den Webserver neu starten.
Schauen wir uns als Nächstes konkrete Beispiele an. Das Folgende ist ein Beispiel für die Verwendung von PDO zum Herstellen einer Verbindung mit der MySql-Datenbank:
<?php$dbms='mysql'; //Datenbanktyp $host='localhost'; //Datenbank-Hostname $user='root'; $pass=''; //Entsprechendes Passwort $dsn="$dbms:host=$host;dbname=$dbName"; try { $dbh = new PDO($dsn, $user, $pass); //Initialisiere ein PDO-Objekt echo „Verbindung erfolgreich<br/>“; /*Sie können auch eine Suchoperation foreach ($dbh->query('SELECT * from FOO') as $row) { print_r($row) durchführen ; //Sie können echo($GLOBAL); verwenden, um diese Werte anzuzeigen} */ $dbh = null;} Catch (PDOException $e) { die ("Error!: " . $e->getMessage() . "<br/>");}//Standardmäßig ist dies keine lange Verbindung zur Datenbank, Sie müssen am Ende einen Parameter hinzufügen: array(PDO::ATTR_PERSISTENT => true) Es sieht so aus: $db = new PDO( $dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));?>
Es ist ganz einfach. Schauen wir uns als Nächstes die spezifischen Anweisungen von PHP PDO genauer an:
Vordefinierte Konstanten
Verbindungsverwaltung für PHP-PDO-Verbindungen
PHP-PDO-Transaktionen und automatisches Commit
PHP PDO vorbereitete Anweisungen und gespeicherte Prozeduren
PHP PDO-Fehler und Fehlerbehandlung
PHP PDO Large Objects (LOBs)
PDO-Klasse:
PDO::beginTransaction – eine Transaktion starten
PDO::commit – Eine Transaktion festschreiben
PDO::__construct – Erstellen Sie eine PDO-Instanz, die eine Datenbankverbindung darstellt
PDO::errorCode – Ruft den SQLSTATE ab, der der letzten Operation des Datenbank-Handles zugeordnet ist
PDO::errorInfo – Gibt die Fehlerinformationen des letzten Datenbankvorgangs zurück
PDO::exec – Führen Sie eine SQL-Anweisung aus und geben Sie die Anzahl der betroffenen Zeilen zurück
PDO::getAttribute – Attribute einer Datenbankverbindung abrufen
PDO::getAvailableDrivers – Gibt ein Array verfügbarer Treiber zurück
PDO::inTransaction – Prüfen, ob innerhalb einer Transaktion
PDO::lastInsertId – Gibt die ID oder den Sequenzwert der zuletzt eingefügten Zeile zurück
PDO::prepare – Bereitet eine auszuführende SQL-Anweisung vor und gibt ein PDOStatement-Objekt zurück
PDO::query – SQL-Anweisungen ausführen und PDOStatement-Objekte zurückgeben, die als Ergebnismengen verstanden werden können
PDO::quote – Anführungszeichen zu Zeichenfolgen in SQL-Anweisungen hinzufügen.
PDO::rollBack – Rollback einer Transaktion
PDO::setAttribute – Attribute festlegen
PDOStatement-Klasse:
PDOStatement::bindColumn – Binden Sie eine Spalte an eine PHP-Variable
PDOStatement::bindParam – Bindet einen Parameter an den angegebenen Variablennamen
PDOStatement::bindValue — Bindet einen Wert an einen Parameter
PDOStatement::closeCursor – Schließt den Cursor, damit die Anweisung erneut ausgeführt werden kann.
PDOStatement::columnCount – Gibt die Anzahl der Spalten im Ergebnissatz zurück
PDOStatement::debugDumpParams – Gibt einen SQL-Vorverarbeitungsbefehl aus
PDOStatement::errorCode – Ruft den SQLSTATE ab, der der letzten Anweisungs-Handle-Operation zugeordnet ist
PDOStatement::errorInfo – Erhalten Sie erweiterte Fehlerinformationen im Zusammenhang mit der letzten Anweisungs-Handle-Operation
PDOStatement::execute – eine vorbereitete Anweisung ausführen
PDOStatement::fetch – Ruft die nächste Zeile aus der Ergebnismenge ab
PDOStatement::fetchAll – Gibt ein Array zurück, das alle Zeilen im Ergebnissatz enthält
PDOStatement::fetchColumn – Gibt eine einzelne Spalte aus der nächsten Zeile im Ergebnissatz zurück.
PDOStatement::fetchObject – Ruft die nächste Zeile ab und gibt sie als Objekt zurück.
PDOStatement::getAttribute – Rufen Sie ein Anweisungsattribut ab
PDOStatement::getColumnMeta – Gibt Metadaten für eine Spalte in einem Ergebnissatz zurück
PDOStatement::nextRowset – Weiter zum nächsten Rowset in einem Multi-Rowset-Anweisungshandle
PDOStatement::rowCount – Gibt die Anzahl der Zeilen zurück, die von der vorherigen SQL-Anweisung betroffen sind
PDOStatement::setAttribute – Legen Sie ein Anweisungsattribut fest
PDOStatement::setFetchMode – Legen Sie den Standardabrufmodus für Anweisungen fest.