Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung der PDO-Klasse in PHP5

Detaillierte Erklärung der PDO-Klasse in PHP5

墨辰丷
墨辰丷Original
2018-05-19 09:14:171599Durchsuche

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung der PDO-Klasse in PHP5 vor. Ich hoffe, dass er für alle hilfreich ist.

■Was ist PDO? Die POD-Erweiterung (PHP Data Object) wurde in PHP5 hinzugefügt. In PHP6 wird standardmäßig PDO für die Verbindung zur Datenbank verwendet. Alle Nicht-PDO-Erweiterungen werden aus der Erweiterung in PHP6 entfernt. Diese Erweiterung bietet eine in PHP integrierte Klasse PDO für den Zugriff auf die Datenbank. Verschiedene Datenbanken verwenden denselben Methodennamen, um das Problem inkonsistenter Datenbankverbindungen zu lösen. Ich habe es für die Entwicklung unter Windows konfiguriert. ■Das Ziel von PDO

Bereitstellung einer leichten, klaren und praktischen API
Vereinheitlichung der gemeinsamen Funktionen verschiedener RDBMS-Bibliotheken, schließt jedoch erweiterte Funktionen nicht aus.
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 implementiert die PDO_OCI-Erweiterung die Oracle-Datenbank-API anstelle der PDO-Erweiterung. Es gibt auch Treiber für MySQL, PostgreSQL, ODBC und Firebird, weitere sind in der Entwicklung. [Trennzeichen]


■PDO installieren
Hier ist die PDO-Erweiterung für die Entwicklung unter WINDOWS. Wenn Sie sie unter Linux installieren und konfigurieren möchten, suchen Sie bitte woanders.
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, die sich in der Erweiterung des Ordners befindet, in dem sich PHP befindet befindet sich. Das Handbuch besagt, dass Versionen vor 5.0 keine PDO-Erweiterungen ausführen können. Konfiguration:
Ändern Sie Ihre php.ini-Konfigurationsdatei, um pdo zu unterstützen. (Wenn Sie php.ini nicht verstehen, machen Sie zunächst klar, dass Sie die php.ini ändern müssen, die beim Aufruf Ihrer phpinfo()-Funktion angezeigt wird.) Entfernen Sie das Semikolon vor extension=php_pdo.dll. Das Semikolon ist das Kommentarsymbol der PHP-Konfiguration. Weiter unten gibt es
;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 entsprechend jeder Erweiterung Die Datenbanken sind:
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 Call Interface
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, fügen Sie einfach die entsprechende Erweiterung hinzu Entfernen Sie das Kommentarsymbol „;“ davor.

■Verwenden Sie PDO
Ich gehe davon aus, dass Sie MySQL installiert haben. Wenn nicht, finden Sie bitte zuerst eine Möglichkeit, es zu installieren. Meiner ist MySQL 5.0.22, und der Passant im Dunkeln verwendet MySQL 4.0.26 . Auch verfügbar.
★Datenbankverbindung:
Wir verwenden das folgende Beispiel, um die PDO-Verbindung zur Datenbank zu analysieren:


$dbms='mysql'; //Datenbanktyp Oracle Wenn Entwickler ODI verwenden, müssen sie dies nur ändern und müssen sich nicht so viele Funktionen merken
$host='localhost' //Datenbank-Hostname
$dbName=' test' ; //Verwendete Datenbank
$user='root'; //Datenbankverbindungsbenutzername
$pass='';/Entsprechendes Passwort
$dsn="$dbms:host=$host ;dbname=$dbName";
//

try {
$dbh = new PDO($dsn, $user, $pass); //Das Initialisieren eines PDO-Objekts bedeutet das Erstellen einer Datenbankverbindung Objekt $dbh
echo "Verbindung erfolgreich
";
/*Sie können auch einen Suchvorgang durchführen

foreach ($dbh->query('Select * from FOO' ) als $row) {
                                                                print_r($row);
} Catch (PDOException $e) {
die ("Fehler!: " . $e->getMessage() . "
");
}
// Standardmäßig ist dies keine lange Verbindung. Wenn Sie eine lange Verbindung zur Datenbank benötigen, müssen Sie am Ende einen Parameter hinzufügen: array(PDO:: ATTR_PERSISTENT => true) sieht folgendermaßen aus:
$db = new PDO($dsn, $user, $pass , array(PDO::ATTR_PERSISTENT => true));

?>


★Datenbankabfrage:
Wir haben oben bereits eine Abfrage durchgeführt, wir können auch die folgende Abfrage verwenden:
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //Attribute festlegen
$rs = $db->query("Select * FROM foo");
$rs-> ;setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>


Wegen Verwenden Sie oben die Methode setAttribute (), geben Sie diese beiden Parameter ein und erzwingen Sie, dass der Feldname in Großbuchstaben geschrieben wird. Im Folgenden sind die Parameter von PDO::setAttribute() aufgeführt: PDO::ATTR_CASE: Erzwingt, dass der Spaltenname ein Format wird, wie unten beschrieben (zweiter Parameter):

PDO::CASE_LOWER: Erzwingt den Spaltennamen Der Name ist in Kleinbuchstaben geschrieben.

PDO::CASE_NATURAL: Der Spaltenname ist in der ursprünglichen Form

PDO::CASE_UPPER: Der Spaltenname muss in Großbuchstaben geschrieben werden.

PDO::ATTR_ERRMODE: Fehlertipp.

PDO::ERRMODE_SILENT: Zeigt keine Fehlerinformationen an, nur Fehlercode.

PDO::ERRMODE_WARNING: Zeigt einen Warnfehler an.

PDO::ERRMODE_EXCEPTION: Eine Ausnahme ist aufgetreten.

PDO::ATTR_ORACLE_NULLS (gültig nicht nur für ORACLE, sondern auch für andere Datenbanken): ) Geben Sie 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 umgewandelt.

PDO::NULL_TO_STRING: NULL wird in eine leere Zeichenfolge umgewandelt.

PDO::ATTR_STRINGIFY_FETCHES: Konvertiert numerische Werte beim Abrufen in Zeichenfolgen.

PDO::ATTR_STATEMENT_CLASS: Vom PDOStatement abgeleitete vom Benutzer bereitgestellte Anweisungsklasse festlegen. Kann nicht mit persistent verwendet werden PDO-Instanzen. 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.
sind wie folgt:
PDO::FETCH_ASSOC – Assoziative Array-Form
PDO::FETCH_NUM – ​​Numerische Index-Array-Form
PDO::FETCH_BOTH – Beide Array-Formen sind verfügbar, was fehlt Provinzial
PDO::FETCH_OBJ – in Form eines Objekts, ähnlich dem vorherigen mysql_fetch_object()

Weitere Rückgabetypdeklarationen (PDOStatement::method name) finden Sie im Handbuch.

★Daten einfügen, aktualisieren, löschen,

$db->exec("Delete FROM `xxxx_menu` where mid=43");


Einfach Um die oben genannten Operationen zusammenzufassen:

Die 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 Select-Operationen.
PDO::exec() wird hauptsächlich für Operationen verwendet, die keine Ergebnismenge zurückgeben, wie z. B. Einfügen, Aktualisieren , und Löschen Bei anderen Vorgängen ist das zurückgegebene Ergebnis die Anzahl der Spalten, die von der aktuellen Operation betroffen sind.
PDO::prepare() ist hauptsächlich eine Vorverarbeitungsoperation. Sie müssen $rs->execute() verwenden, um die SQL-Anweisungen in der Vorverarbeitung auszuführen. Diese Methode kann nicht beschrieben werden Wenn Sie es verstanden haben, lesen Sie einfach das Handbuch und andere Dokumente.

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() wird verwendet, um alle Datensätze in einem abzurufen. Um die Ergebnisse zu erhalten, können Sie den Typ des erforderlichen Ergebnissatzes festlegen PDOStatement::setFetchMode.

Es gibt zwei weitere periphere Operationen, eine davon ist 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. Es ist für PDO::exec ungültig ()-Methode und Select-Operation.

Verwandte Empfehlungen:

Der Grund, warum die PDO-Methode die Injektion in MySQL verhindern kann

ThinkPHP-Framework basierend auf einem Beispiel für den Betrieb einer PDO-Methodenverbindungsdatenbank

Beispiel für einen PDO-Transaktionsverarbeitungsvorgang in PHP

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der PDO-Klasse in PHP5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn