Die POD-Erweiterung wurde in PHP5 hinzugefügt. Diese Erweiterung stellt die in PHP integrierte Klasse PDO bereit, um auf die Datenbank zuzugreifen. Verschiedene Datenbanken verwenden denselben Methodennamen, um das Problem inkonsistenter Datenbankverbindungen zu lösen.
Das Ziel von PDO ist
die Bereitstellung einer leichten, klaren und praktischen API
Vereinheitlichen Sie gemeinsame Funktionen verschiedener RDBMS-Bibliotheken, ohne erweiterte Funktionen auszuschließen.
Bietet optional einen höheren Grad an Abstraktion/Kompatibilität über PHP-Skripte.
Merkmale von PDO:
Leistung. PDO erfuhr von Anfang an von den Erfolgen und Misserfolgen der Skalierung bestehender Datenbanken. Da der Code von PDO brandneu ist, haben wir die Möglichkeit, die Leistung von Grund auf neu zu gestalten, um die neuesten Funktionen von PHP 5 zu nutzen.
Fähigkeit. PDO wurde entwickelt, um allgemeine Datenbankfunktionen als Grundlage bereitzustellen und gleichzeitig einen einfachen Zugriff auf die einzigartigen Funktionen eines RDBMS zu ermöglichen.
Einfach. PDO wurde entwickelt, um Ihnen die Arbeit mit Datenbanken zu erleichtern. Die API dringt nicht mit Gewalt in Ihren Code ein und macht deutlich, was jeder Funktionsaufruf bewirkt.
Zur Laufzeit erweiterbar. Die PDO-Erweiterung ist modular aufgebaut und ermöglicht es Ihnen, Treiber für Ihr Datenbank-Backend zur Laufzeit zu laden, ohne das gesamte PHP-Programm neu kompilieren oder installieren zu müssen. Beispielsweise wird die PDO_OCI-Erweiterung die PDO-Erweiterung ersetzen, um die Oracle-Datenbank-API zu implementieren. Es gibt auch Treiber für MySQL, PostgreSQL, ODBC und Firebird, weitere sind in der Entwicklung. [Separator]
PDO installieren
Was ich hier habe, ist eine PDO-Erweiterung für die Entwicklung unter WINDOWS. Wenn Sie sie unter Linux installieren und konfigurieren möchten, schauen Sie sich bitte woanders um.
Versionsanforderungen: PHP5.1 und spätere Versionen sind bereits im Paket enthalten. PHP5.0.x muss von pecl.php.net heruntergeladen und in Ihrer Erweiterungsbibliothek abgelegt werden. Dies ist der ext-Ordner des Ordners, in dem sich PHP befindet ;Das Handbuch besagt, dass Versionen vor 5.0 keine PDO-Erweiterungen ausführen können. Konfiguration:
Ändern Sie Ihre php.ini-Konfigurationsdatei so, dass sie pdo unterstützt. (Wenn Sie php.ini nicht verstehen, müssen Sie es zuerst herausfinden. Sie müssen die php.ini ändern, die beim Aufruf Ihrer phpinfo()-Funktion angezeigt wird.) Ändern Sie extension= php_pdo Entfernen Sie das Semikolon vor .dll. Das Semikolon ist das Kommentarsymbol der PHP-Konfiguration. Diese Erweiterung ist erforderlich. Es gibt noch mehr
;extension=php_pdo.dll
;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
Die jeder Erweiterung entsprechende Datenbank ist:
Treibername Unterstützte Datenbanken
PDO_DBLIB FreeTDS/Microsoft SQL Server/Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle-Aufrufschnittstelle
PDO_ODBC ODBC v3 (IBM DB2, unixODBC und win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 und SQLite 2
Welche Datenbank Sie verwenden möchten, entfernen Sie einfach das Kommentarsymbol „;“ vor der entsprechenden Erweiterung.
Verwendung von PDO
Ich gehe davon aus, dass Sie MySQL installiert haben. Wenn nicht, finden Sie bitte zuerst eine Möglichkeit, es zu installieren. Meins ist MySQL5.0.22, und andere, die MySQL 4.0.26 verwenden, können es auch verwenden.
Datenbankanbindung:
Wir verwenden das folgende Beispiel, um die PDO-Verbindungsdatenbank zu analysieren:
<?php
$dbms='mysql'; //Datenbanktyp Oracle verwendet ODI Für Entwickler, die verschiedene Datenbanken verwenden, müssen Sie sich nicht so viele Funktionen merken.
$host='localhost'; //Datenbank-Hostname
$dbName='test'; //Verwendete Datenbank
$user='root'; //Benutzername der Datenbankverbindung
$pass=''; //Entsprechendes Passwort
$dsn="$dbms:host=$host;dbname=$dbName";
versuchen {
$dbh = new PDO($dsn, $user, $pass); //Das Initialisieren eines PDO-Objekts bedeutet das Erstellen des Datenbankverbindungsobjekts $dbh
echo „Verbindung erfolgreich<br/>“;
/*Sie können auch einen Suchvorgang durchführen
foreach ($dbh->query('Select * from FOO') as $row) {
print_r($row); //Sie können echo($GLOBAL); verwenden, um diese Werte anzuzeigen
}
*/
$dbh = null;
} Catch (PDOException $e) {
die ("Fehler!: " . $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).
$db = neues PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
Datenbankabfrage:
Wir haben oben bereits eine Abfrage durchgeführt und können auch die folgende Abfrage verwenden:
<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //Attribute setzen
$rs = $db->query("Select * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
Da oben die Methode setAttribute() verwendet wird, werden die beiden Parameter eingegeben, um zu erzwingen, dass der Feldname in Großbuchstaben geschrieben wird. Im Folgenden sind die Parameter von PDO::setAttribute() aufgeführt: PDO::ATTR_CASE: Erzwingt, dass Spaltennamen in einem Format vorliegen, wie unten beschrieben (zweiter Parameter):
PDO::CASE_LOWER: Erzwingt, dass Spaltennamen in Kleinbuchstaben geschrieben werden.
PDO::CASE_NATURAL: Spaltennamen haben ihre ursprüngliche Form
PDO::CASE_UPPER: Spaltennamen in Großbuchstaben umwandeln.
PDO::ATTR_ERRMODE: Fehlermeldung.
PDO::ERRMODE_SILENT: Zeigt keine Fehlerinformationen an, sondern nur den Fehlercode.
PDO::ERRMODE_WARNING: Warnfehler anzeigen.
PDO::ERRMODE_EXCEPTION: Löst eine Ausnahme aus.
PDO::ATTR_ORACLE_NULLS (gültig nicht nur für ORACLE, sondern auch für andere Datenbanken): ) gibt den entsprechenden Wert in PHP für den von der Datenbank zurückgegebenen NULL-Wert an.
PDO::NULL_NATURAL: unverändert.
PDO::NULL_EMPTY_STRING: Leere Zeichenfolge wird in NULL konvertiert.
PDO::NULL_TO_STRING: NULL wird in einen leeren String umgewandelt.
PDO::ATTR_STRINGIFY_FETCHES: Konvertieren Sie numerische Werte beim Abrufen in Zeichenfolgen.
PDO::ATTR_STATEMENT_CLASS: Vom Benutzer bereitgestellte Anweisungsklasse festlegen, die von PDOStatement abgeleitet ist. Kann nicht mit persistenten PDO-Instanzen verwendet werden. Erfordert Array (String-Klassenname, Array (gemischte Konstruktorargumente)).
PDO::ATTR_AUTOCOMMIT (verfügbar in OCI, Firebird und MySQL): Ob jede einzelne Anweisung automatisch festgeschrieben werden soll.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (verfügbar in MySQL): Gepufferte Abfragen verwenden.
$rs->setFetchMode(PDO::FETCH_ASSOC); im Beispiel ist PDOStatement::setFetchMode() eine Deklaration des Rückgabetyps.
Es gibt folgende:
PDO::FETCH_ASSOC – assoziative Array-Form
PDO::FETCH_NUM – Numerisches Index-Array-Format
PDO::FETCH_BOTH – Beide sind in Array-Form verfügbar, was die Standardeinstellung ist
PDO::FETCH_OBJ – in Form eines Objekts, ähnlich dem vorherigen mysql_fetch_object()
Weitere Rückgabetypdeklarationen (PDOStatement::Methodenname) finden Sie im Handbuch.
Daten einfügen, aktualisieren, löschen,
$db->exec("Delete FROM `xxxx_menu` where mid=43");
Fassen Sie die obigen Vorgänge kurz zusammen:
Abfrageoperationen sind hauptsächlich PDO::query(), PDO::exec(), PDO::prepare().
PDO::query() wird hauptsächlich für Operationen verwendet, die aufgezeichnete Ergebnisse zurückgeben, insbesondere für Select-Operationen.
PDO::exec() ist hauptsächlich für Vorgänge gedacht, die keine Ergebnismenge zurückgeben, wie z. B. Einfügen, Aktualisieren, Löschen und andere Vorgänge. Das zurückgegebene Ergebnis ist die Anzahl der von der aktuellen Operation betroffenen Spalten.
PDO::prepare() ist hauptsächlich eine Vorverarbeitungsoperation. Sie müssen $rs->execute() verwenden, um die SQL-Anweisung in der Vorverarbeitung auszuführen. Sie kann in diesem Artikel nicht einfach erklärt werden . Jeder kann auf Handbücher und andere Dokumentationen zurückgreifen.
Die Hauptoperationen zum Erhalten der Ergebnismenge sind: PDOStatement::fetchColumn(), PDOStatement::fetch(), PDOStatement::fetchALL().
PDOStatement::fetchColumn() ist ein Feld des ersten im Abrufergebnis angegebenen Datensatzes. Der Standardwert ist das erste Feld.
PDOStatement::fetch() wird verwendet, um einen Datensatz abzurufen.
PDOStatement::fetchAll() dient dazu, alle Datensatzsätze in einem zusammenzufassen. Um die Ergebnisse zu erhalten, können Sie den Typ des erforderlichen Ergebnissatzes über PDOStatement::setFetchMode festlegen.
Es gibt auch zwei umgebende Operationen: PDO::lastInsertId() und PDOStatement::rowCount(). PDO::lastInsertId() gibt den letzten Einfügevorgang zurück und der Typ der Primärschlüsselspalte ist die letzte Auto-Inkrement-ID.
PDOStatement::rowCount() wird hauptsächlich für die Ergebnismenge verwendet, die von den Lösch-, Einfüge- und Aktualisierungsvorgängen von PDO::query() und PDO::prepare() betroffen ist, und ist für die Methode PDO::exec() ungültig und Vorgang auswählen.