PHP PDO
Die PHP Data Objects (PDO)-Erweiterung definiert eine leichtgewichtige, konsistente Schnittstelle für den Zugriff von PHP auf Datenbanken.
PDO bietet eine Abstraktionsschicht für den Datenzugriff, was bedeutet, dass Sie unabhängig von der verwendeten Datenbank dieselben Funktionen (Methoden) zum Abfragen und Abrufen von Daten verwenden können.
PDO wurde mit PHP 5.1 veröffentlicht und ist auch in der PECL-Erweiterung für PHP 5.0 verfügbar; es kann nicht auf früheren PHP-Versionen ausgeführt werden.
PDO-Installation
Sie können die Funktion phpinfo() von PHP verwenden, um zu prüfen, ob die PDO-Erweiterung installiert ist.
Installation von PDO auf Unix-Systemen
Unter Unix oder Linux müssen Sie die folgenden Erweiterungen hinzufügen:
extension=pdo.so
Windows-Benutzer
PDO und alle wichtigen Treiber werden mit PHP als gemeinsam genutzte Erweiterungen verteilt. Um sie zu aktivieren, bearbeiten Sie einfach die Datei php.ini und fügen Sie die folgenden Erweiterungen hinzu:
extension=php_pdo.dllDarüber hinaus gibt es die folgenden entsprechenden Datenbankerweiterungen:
;extension=php_pdo_firebird.dll ;extension=php_pdo_informix.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql.dll ;extension=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.
Als Nächstes sehen wir uns ein konkretes Beispiel an. Das Folgende ist ein Beispiel für die Verwendung von PDO, um eine Verbindung zu einer MySQL-Datenbank herzustellen:
Beispiel
$dbms='mysql'; //Datenbanktyp
$host='localhost'; //Datenbank-Hostname
$dbName='test'; //verwendete Datenbank
$user='root'; //Benutzername für die Datenbankverbindung
$pass=''; //zugehöriges Passwort
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //ein PDO-Objekt initialisieren
echo "Verbindung erfolgreich<br/>";
/*Sie können auch eine Suchoperation durchführen
foreach ($dbh->query('SELECT * from FOO') as $row) {
print_r($row); //Sie können echo($GLOBAL); verwenden, um diese Werte zu sehen
}
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
//Standardmäßig ist dies keine persistente Verbindung. Wenn Sie eine persistente Datenbankverbindung benötigen, müssen Sie am Ende einen Parameter hinzufügen: array(PDO::ATTR_PERSISTENT => true) wie folgt:
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
Sehr einfach. Als Nächstes werfen wir einen genaueren Blick auf die spezifische Dokumentation für PHP PDO:
- Vordefinierte Konstanten
- PHP PDO-Verbindungsverwaltung
- PHP-PDO-Transaktionen und Auto-Commit
- PHP PDO Prepared Statements und gespeicherte Prozeduren
- PHP PDO-Fehler und Fehlerbehandlung
- PHP PDO Große Objekte (LOBs)
- PDO-Klasse:
- PDO::beginTransaction— Startet eine Transaktion
- PDO::commit— Bestätigt eine Transaktion
- PDO::__construct— Erzeugt eine PDO-Instanz, die eine Datenbankverbindung darstellt
- PDO::errorCode— Ruft den SQLSTATE ab, der der letzten Operation auf dem Datenbank-Handle zugeordnet ist
- PDO::errorInfo— Gibt die Fehlermeldung für die letzte Datenbankoperation zurück
- PDO::exec— Führt eine SQL-Anweisung aus und gibt die Anzahl der betroffenen Zeilen zurück
- PDO::getAttribute— Ruft eine Eigenschaft einer Datenbankverbindung ab
- PDO::getAvailableDrivers— Gibt ein Array der verfügbaren Treiber zurück
- PDO::inTransaction— Prüft, ob man sich innerhalb einer Transaktion befindet
- PDO::lastInsertId— Gibt die ID oder den Sequenzwert der zuletzt eingefügten Zeile zurück
- PDO::prepare— Bereitet eine SQL-Anweisung zur Ausführung vor und gibt ein PDOStatement-Objekt zurück
- PDO::query— Führt eine SQL-Anweisung aus, gibt ein PDOStatement-Objekt zurück, das als Ergebnismenge verstanden werden kann
- PDO::quote— Fügt Anführungszeichen zu einer Zeichenkette in einer SQL-Anweisung hinzu.
- PDO::rollBack— Macht eine Transaktion rückgängig
- PDO::setAttribute— Setzt ein Attribut
- PDOStatement-Klasse:
- PDOStatement::bindColumn— Bindet eine Spalte an eine PHP-Variable
- PDOStatement::bindParam— Bindet einen Parameter an einen angegebenen Variablennamen
- PDOStatement::bindValue— Bindet einen Wert an einen Parameter
- PDOStatement::closeCursor— Schließt den Cursor, wodurch die Anweisung erneut ausgeführt werden kann.
- PDOStatement::columnCount— Gibt die Anzahl der Spalten in der Ergebnismenge zurück
- PDOStatement::debugDumpParams— Gibt einen vorbereiteten SQL-Befehl aus
- PDOStatement::errorCode— Ruft den SQLSTATE ab, der der letzten Operation des Statement-Handles zugeordnet ist
- PDOStatement::errorInfo— Ruft erweiterte Fehlerinformationen ab, die der letzten Operation des Statement-Handles zugeordnet sind
- PDOStatement::execute— Führt eine vorbereitete Anweisung aus
- PDOStatement::fetch— Ruft die nächste Zeile aus der Ergebnismenge ab
- PDOStatement::fetchAll— Gibt ein Array mit allen Zeilen in der Ergebnismenge zurück
- PDOStatement::fetchColumn— Gibt eine einzelne Spalte aus der nächsten Zeile in der Ergebnismenge zurück.
- PDOStatement::fetchObject— Ruft die nächste Zeile ab und gibt sie als Objekt zurück.
- PDOStatement::getAttribute— Ruft ein Anweisungsattribut ab
- PDOStatement::getColumnMeta— Gibt Metadaten für eine Spalte in der Ergebnismenge zurück
- PDOStatement::nextRowset— Rückt zum nächsten Rowset in einem Multi-Rowset-Anweisungs-Handle vor
- PDOStatement::rowCount— Gibt die Anzahl der von der letzten SQL-Anweisung betroffenen Zeilen zurück
- PDOStatement::setAttribute— Legt ein Anweisungsattribut fest
- PDOStatement::setFetchMode— Legt den standardmäßigen Abrufmodus für die Anweisung fest.