Heim  >  Artikel  >  php教程  >  Detaillierte Erläuterung der PHP-PDO-Funktionsbibliothek

Detaillierte Erläuterung der PHP-PDO-Funktionsbibliothek

高洛峰
高洛峰Original
2017-01-06 14:31:251343Durchsuche

Derzeit ist es noch ein langer Weg, die „Datenbankabstraktionsschicht“ zu implementieren. Die Verwendung einer „Datenbankzugriffsabstraktionsschicht“ wie PDO ist eine gute Wahl.

PDO enthält drei vordefinierte Klassen

PDO enthält drei vordefinierte Klassen, nämlich PDO, PDOStatement und PDOException.

1. PDO

PDO->beginTransaction() – Markieren Sie den Startpunkt des Rollbacks
PDO->commit() – Markieren Sie den Endpunkt des Rollbacks und führen Sie SQL aus
PDO->__construct() – Instanz einer PDO-Link-Datenbank erstellen
PDO->errorCode() – Fehlercode abrufen
PDO->errorInfo() – Fehlerinformationen abrufen
PDO- >exec() – Verarbeitet eine SQL-Anweisung und gibt die Anzahl der betroffenen Einträge zurück
PDO->getAttribute() – Ruft die Attribute eines „Datenbankverbindungsobjekts“ ab
PDO->getAvailableDrivers() – Gültigen PDO-Laufwerksnamen abrufen
PDO->lastInsertId() – Primärschlüsselwert des zuletzt geschriebenen Datenelements abrufen
PDO->prepare() – Ein „Abfrageobjekt“
PDO generieren -> ;query() – Eine SQL-Anweisung verarbeiten und ein „PDOStatement“ zurückgeben
PDO->quote() – Anführungszeichen zu einer Zeichenfolge in SQL hinzufügen
PDO->rollBack() – Return RollPDO->setAttribute() – Attribute für ein „Datenbankverbindungsobjekt“ festlegen

2. PDOStatement

PDOStatement->bindColumn() – Eine Spalte an eine PHP-Variable binden

PDOStatement->bindParam() – Bindet einen Parameter an den angegebenen Variablennamen
PDOStatement->bindValue() – Bindet einen Wert an einen Parameter
PDOStatement->closeCursor() – Schließt den Cursor, Dadurch kann die Anweisung erneut ausgeführt werden.
PDOStatement->columnCount() – Gibt die Anzahl der Spalten im Ergebnissatz zurück
PDOStatement->errorCode() – Ruft den SQLSTATE ab, der der letzten Operation der Anweisung zugeordnet ist handle
PDOStatement->errorInfo() – Erweiterte Fehlerinformationen abrufen, die mit der letzten Operation der Anweisung verknüpft sind. handle
PDOStatement->execute() – Führt eine vorbereitete Anweisung aus
PDOStatement-> – Ruft die nächste Zeile aus einer Ergebnismenge ab
PDOStatement->fetchAll() – Gibt ein Array zurück, das alle Zeilen der Ergebnismenge enthält
PDOStatement->fetchColumn() – Gibt eine einzelne Spalte aus der nächsten Zeile von zurück eine Ergebnismenge
PDOStatement->fetchObject() – Ruft die nächste Zeile ab und gibt sie als Objekt zurück.
PDOStatement->getAttribute() – Ruft ein Anweisungsattribut ab
PDOStatement-> – Gibt Metadaten für eine Spalte in einem Ergebnissatz zurück
PDOStatement->nextRowset() – Geht zum nächsten Rowset in einem Multi-Rowset-Anweisungshandle vor
PDOStatement->rowCount() – Gibt die Anzahl der betroffenen Zeilen zurück durch die letzte SQL-Anweisung
PDOStatement->setAttribute() – Legen Sie ein Anweisungsattribut fest
PDOStatement->setFetchMode() – Legen Sie den Standardabrufmodus für diese Anweisung fest

PDO ist eine „Datenbank“. Die Zugriffsabstraktionsschicht wird verwendet, um die Zugriffsschnittstellen verschiedener Datenbanken zu vereinheitlichen. Im Vergleich zu den Funktionsbibliotheken von MySQL und MySQL macht PDO die datenbankübergreifende Verwendung benutzerfreundlicher. Im Vergleich zu ADODB und MDB2 ist PDO effizienter. Derzeit ist es noch ein langer Weg, die „Datenbankabstraktionsschicht“ zu implementieren. Die Verwendung einer „Datenbankzugriffsabstraktionsschicht“ wie PDO ist eine gute Wahl.

PDO enthält drei vordefinierte Klassen

PDO enthält drei vordefinierte Klassen, nämlich PDO, PDOStatement und PDOException.

1. PDO

PDO->beginTransaction() – Markieren Sie den Startpunkt des Rollbacks

PDO->commit() – Markieren Sie den Endpunkt des Rollbacks und führen Sie SQL aus
PDO->rollBack() – Rollback durchführen
PDO->__construct() – Instanz der PDO-Link-Datenbank erstellen
PDO->errorCode() – Fehlercode abrufen
PDO-> ;errorInfo() – Fehlerinformationen abrufen
PDO->exec() – Eine SQL-Anweisung verarbeiten und die Anzahl der betroffenen Einträge zurückgeben
PDO->getAttribute() – Ein „Datenbankverbindungsobjekt“ abrufen. Eigenschaften von
PDO->getAvailableDrivers() – Den gültigen PDO-Treibernamen abrufen
PDO->lastInsertId() – Den Primärschlüsselwert des zuletzt geschriebenen Datenelements abrufen
PDO->prepare( ) – Erzeugen Sie ein „Abfrageobjekt“
PDO->query() – Verarbeiten Sie eine SQL-Anweisung und geben Sie ein „PDOStatement“ zurück.
PDO->quote() – Fügen Sie es zu einer Zeichenfolge in einem SQL-Anführungszeichen
PDO hinzu ->setAttribute() – Attribute für ein „Datenbankverbindungsobjekt“ festlegen

Detaillierte Erklärung 1) Datenbankverbindung im PDO

$dsn = 'mysql:dbname=ent;host =127.0.0.1′;
$user = 'root';
$password = '123456';
try {
$dbh = new PDO($dsn, $user, $password, array (PDO::ATTR_PERSISTENT = > true));
$dbh->query('setnamen utf8;');
foreach ($dbh->query('SELECT * from tpm_juese') as $row) {
print_r($row);
}
} Catch (PDOException $e) {
echo 'Verbindung fehlgeschlagen: ' $e->getMessage();
}

Viele Webanwendungen werden durch die Verwendung dauerhafter Verbindungen zur Datenbank optimiert. Die dauerhafte Verbindung wird am Ende des Skripts nicht geschlossen,
stattdessen wird sie zwischengespeichert und wiederverwendet, wenn ein anderes Skript eine Verbindung mit derselben ID anfordert.
Der Cache dauerhafter Verbindungen ermöglicht es Ihnen, den Ressourcenverbrauch zu vermeiden, der durch die Bereitstellung einer neuen Verbindung jedes Mal entsteht, wenn das Skript mit der Datenbank kommunizieren muss, wodurch Ihre Webanwendung schneller wird.
Das Array (PDO::ATTR_PERSISTENT => true) im obigen Beispiel legt den Verbindungstyp auf dauerhafte Verbindung fest.

Detaillierte Erklärung 2) Transaktionen in PDO
PDO->beginTransaction(), PDO->commit(), PDO->rollBack() sind die drei Methoden, bei denen die Rollback-Funktion unterstützt wird zusammen. Die Methode PDO->beginTransaction() markiert den Startpunkt, die Methode PDO->commit() markiert den Rollback-Endpunkt und führt SQL aus und PDO->rollBack() führt ein Rollback durch.
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ”);
$dbh->query( 'setnamen utf8;');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();
$dbh- >exec("INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);");
$dbh->exec("INSERT INTO `test `.`table` (`name` ,`age`)VALUES ('lily', 29);“);
$dbh->exec(“INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('susan', 21);“);
$dbh->commit();

} Catch (Exception $e) {
$dbh-> ;rollBack();
echo "Failed: " . $e->getMessage();
}
?>
Jetzt haben Sie die Verbindung über PDO hergestellt, bevor Sie die Abfrage bereitstellen Sie müssen verstehen, wie PDO Transaktionen verwaltet (nun eine kurze Einführung:), sie bieten 4 Hauptmerkmale: Atomizität, Konsistenz, Unabhängigkeit und Haltbarkeit (Atomizität), Konsistenz, Isolation und Haltbarkeit (ACID). Für Laien ausgedrückt: Wenn die gesamte Arbeit in einer Transaktion übermittelt wird, muss sie, auch wenn sie schrittweise ausgeführt wird, sicher auf die Datenbank angewendet werden und darf nicht durch andere Verbindungen beeinträchtigt werden. Kann leicht automatisch abgebrochen werden, wenn ein Fehler auftritt Die typische Verwendung von Transaktionen besteht darin, Batch-Änderungen zu „speichern“ und sie dann sofort auszuführen. Mit anderen Worten: Dadurch können Ihre Skripte schneller und potenziell robuster werden Sie müssen sie trotzdem korrekt verwenden.)

Leider unterstützt nicht jede Datenbank Transaktionen, daher ist die Ausführung im sogenannten „Autocommit“-Modus beim Herstellen einer Verbindung erforderlich eigene implizite Transaktionsverarbeitung, unabhängig davon, ob die Datenbank Transaktionen unterstützt oder nicht vorhanden ist, weil die Datenbank dies nicht tut. Wenn Sie eine Transaktion benötigen, müssen Sie eine mit der Methode PDO->beginTransaction() erstellen. Wenn der zugrunde liegende Treiber keine Transaktionen unterstützt, wird eine PDOException ausgelöst (unabhängig von Ihren Ausnahmebehandlungseinstellungen, da dies immer ein schwerwiegender Fehlerzustand ist). Innerhalb einer Transaktion können Sie diese mit PDO->commit() oder PDO->rollBack() beenden, je nachdem, ob der Code in der Transaktion erfolgreich ausgeführt wurde.

Wenn das Skript endet oder eine Verbindung geschlossen wird und Sie noch eine nicht abgeschlossene Transaktion haben, setzt PDO diese automatisch zurück. Dies ist eine sichere Lösung für den Fall, dass das Skript unerwartet beendet wird. Wenn Sie die Transaktion nicht explizit festschreiben, geht es davon aus, dass etwas schief gelaufen ist, und führt zur Sicherheit Ihrer Daten ein Rollback durch.

2. PDOStatement

PDOStatement->bindColumn() – Bindet eine Spalte an eine PHP-Variable
PDOStatement->bindParam() – Bindet einen Parameter an den angegebenen Variablennamen
PDOStatement->bindValue() – Bindet eine Wert zu einem Parameter
PDOStatement->closeCursor() – Schließt den Cursor und ermöglicht die erneute Ausführung der Anweisung.
PDOStatement->columnCount() – Gibt die Anzahl der Spalten im Ergebnissatz zurück
PDOStatement->errorCode() – Ruft den SQLSTATE ab, der mit der letzten Operation auf dem Anweisungshandle verknüpft ist
PDOStatement->errorInfo() – Ruft erweiterte Fehlerinformationen ab, die mit der letzten Operation auf dem Anweisungshandle verknüpft sind
PDOStatement-> ;execute() – Führt eine vorbereitete Anweisung aus
PDOStatement->fetch() – Ruft die nächste Zeile aus einer Ergebnismenge ab
PDOStatement->fetchAll() – Gibt ein Array zurück, das alle Zeilen der Ergebnismenge enthält
PDOStatement->fetchColumn() – Gibt eine einzelne Spalte aus der nächsten Zeile einer Ergebnismenge 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() – Geht zum nächsten Rowset in einem Multi-Rowset Anweisungshandle
PDOStatement->rowCount() – Gibt die Anzahl der Zeilen zurück, die von der letzten SQL-Anweisung betroffen sind
PDOStatement->setAttribute() – Setzt ein Anweisungsattribut
PDOStatement->setFetchMode() – Legen Sie den Standardabrufmodus für diese Anweisung fest

三、PDOException

PDO 提供了3中不同的错误处理策略.
1. PDO::ERRMODE_SILENT和 PDO->errorInfo() ist nicht verfügbar ;如果错误是在对statement对象进行调用时导致的, 你就可以在那个对象上使用 PDOStatement->errorCode() oder PDOStatement->errorInfo()方法取得错误信息.而如果错误是在对database对象调用时导致的,你就应该在这个database对象上调用那两个方法.
2. PDO::ERRMODE_WARNING
作为设置错误代号的附加/试时是很有用的,如果你只是想看看发生了什么问题而不想中断程序的流程的话.
3. PDO::ERRMODE_EXCEPTION
作为设置错误代号的附件 ,号和错误信息.这中设置在除错时也是很有用的,因为他会有效的„放大 (explodieren)“导致脚本中断,事务处理回自动回滚。)
异常模式也是非常有用的,因为你可以使用比以前那种使用传统的PHP风格的错误处理结构更清晰的结构处理错误也能够更加明确地检查每个数据库访问Ausnahmen. Verwenden Sie die PDO-Datei, um die SQLSTATE-Funktion zu verwenden代号上。PDO->errorCode() 方法只返回单一的SQLSTATE代号。如果你需要关于一个错误的更加有针对性的信息,PDO也提供了一个PDO->errorInfo()方法,它可以返回一个包含了SQLSTATE代号,特定数据库驱动的错误代号和特定数据库驱动的错误说明字符串.

// 修改默认的错误显示级别

$dbh-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

?>

属性列表:

PDO::PARAM_BOOL
Stellt einen booleschen Typ dar
PDO::PARAM_NULL
Stellt einen NULL-Typ in SQL dar
PDO::PARAM_INT
Stellt einen INTEGER-Typ in SQL dar
PDO ::PARAM_STR
stellt einen SQL-CHAR in SQL dar, der VARCHAR-Typ
PDO::PARAM_LOB
stellt einen großen Objekttyp in SQL dar.
PDO::PARAM_STMT
stellt einen SQL-Recordset-Typ dar wird noch unterstützt
PDO::PARAM_INPUT_OUTPUT
Gibt an, dass der Parameter ein INOUT-Parameter für eine gespeicherte Prozedur ist. Sie müssen diesen Wert bitweise mit einem expliziten PDO::PARAM_*-Datentyp verknüpfen.
PDO::FETCH_LAZY
Gibt jede Ergebniszeile als Objekt zurück
PDO::FETCH_ASSOC
Gibt nur die Ergebnismenge der Abfrage mit dem Schlüsselwert als Index zurück. Daten mit demselben Namen geben nur eins zurück
PDO ::. FETCH_NAMED
Gibt nur die Ergebnismenge der Abfrage mit dem Schlüsselwert als Index zurück, und die Daten mit demselben Namen werden in Form eines Arrays zurückgegeben
PDO::FETCH_NUM
Gibt nur die Ergebnismenge zurück der Abfrage mit der Nummer als Index
PDO::FETCH_BOTH
Gibt die Ergebnismenge der Abfrage mit Schlüsselwert und Nummer gleichzeitig als Index zurück
PDO::FETCH_OBJ
Gibt das Ergebnis zurück in Form eines Objekts festgelegt
PDO::FETCH_BOUND
Der an PDOStatement::bindParam() und PDOStatement::bindColumn() gebundene Wert wird nach der Zuweisung als Variablenname zurückgegeben
PDO::FETCH_COLUMN
bedeutet, dass nur eine bestimmte Spalte in der Ergebnismenge zurückgegeben wird
PDO::FETCH_CLASS
Gibt an, dass die Ergebnismenge in Form einer Klasse zurückgegeben wird
PDO::FETCH_INTO
Gibt an, dass die Daten wird in eine bestehende Klasse eingebunden und zurückgegeben
PDO::FETCH_FUNC
PDO::FETCH_GROUP
PDO ::FETCH_UNIQUE
PDO::FETCH_KEY_PAIR
Gibt die Ergebnismenge in Form des ersten Schlüssels zurück Wert und die folgenden Zahlen
PDO::FETCH_CLASSTYPE
PDO::FETCH_SERIALIZE
bedeutet, dass die Daten in eine vorhandene Klasse zusammengeführt und wieder serialisiert werden. Delegieren, Ausführung starten
PDO::ATTR_PREFETCH
Legen Sie die von der Anwendung erhaltene Datengröße im Voraus fest, da diese nicht von allen Datenbanken unterstützt wird
PDO::ATTR_TIMEOUT
Legen Sie den Wert für das Verbindungsdatenbank-Timeout fest
PDO ::ATTR_ERRMODE
Legen Sie den Fehlerverarbeitungsmodus fest
PDO::ATTR_SERVER_VERSION
Schreibgeschütztes Attribut, das die serverseitige Datenbankversion der PDO-Verbindung angibt.
PDO::ATTR_CLIENT_VERSION
Schreibgeschütztes Attribut, das die PDO-Verbindung angibt. Die Client-PDO-Treiberversion
PDO::ATTR_SERVER_INFO
Schreibgeschütztes Attribut, das die Metainformationen des mit PDO verbundenen Servers angibt
PDO::ATTR_CONNECTION_STATUS
PDO::ATTR_CASE
Von PDO::CASE_ Der Inhalt in * Arbeiten mit der Form von Spalten
PDO::ATTR_CURSOR_NAME
Den Namen des Zeigers abrufen oder festlegen
PDO::ATTR_CURSOR
Den Typ des Zeigers festlegen unterstützt jetzt PDO::CURSOR_FWDONLY und PDO::CURSOR_FWDONLY
PDO::ATTR_DRIVER_NAME
Gibt den Namen des verwendeten PDO-Treibers zurück
PDO::ATTR_ORACLE_NULLS
Konvertiert den zurückgegebenen leeren String in SQL NULL
PDO::ATTR_PERSISTENT
Erhalten Sie eine vorhandene Verbindung
PDO::ATTR_STATEMENT_CLASS
PDO::ATTR_FETCH_CATALOG_NAMES
Verwenden Sie im zurückgegebenen Ergebnissatz benutzerdefinierte Katalognamen anstelle von Feldnamen.
PDO::ATTR_FETCH_TABLE_NAMES
Verwenden Sie benutzerdefinierte Tabellennamen anstelle von Feldnamen im zurückgegebenen Ergebnissatz.
PDO::ATTR_STRINGIFY_FETCHES
PDO::ATTR_MAX_COLUMN_LEN
PDO::ATTR_DEFAULT_FETCH_MODE
Verfügbar seit PHP 5.2.0
PDO::ATTR_EMULATE_PREPARES
Verfügbar seit PHP 5.1. 3.
PDO::ERRMODE_SILENT
Meldet keine Fehlermeldung, wenn ein Fehler auftritt, was der Standardwert ist
PDO::ERRMODE_WARNING
Sendet eine PHP-E_WARNING-Nachricht, wenn ein Fehler auftritt
PDO::ERRMODE_EXCEPTION
Löst eine PDOException aus, wenn ein Fehler auftritt
PDO::CASE_NATURAL
Antworten Sie auf das Standardanzeigeformat der Spalte
PDO::CASE_LOWER
Erzwingen Sie die Kleinschreibung des Spaltennamens
PDO:: CASE_UPPER
Erzwinge, dass die Spalte groß geschrieben wird.
PDO::NULL_NATURAL
PDO::NULL_EMPTY_STRING
PDO::NULL_TO_STRING
PDO::FETCH_ORI_NEXT
Ruft die nächste Datenzeile in ab Ergebnismenge, nur gültig, wenn eine Zeigerfunktion vorhanden ist
PDO::FETCH_ORI_PRIOR
Ruft die vorherige Datenzeile in der Ergebnismenge ab. Sie ist nur gültig, wenn die Zeigerfunktion verfügbar ist
Erhält die erste Datenzeile im Ergebnissatz. Dies ist nur gültig, wenn die Zeigerfunktion verfügbar ist.
PDO::FETCH_ORI_LAST
Erhält die letzte Datenzeile im Ergebnissatz Zeigerfunktion ist verfügbar
PDO::FETCH_ORI_ABS
Eine bestimmte Datenzeile im Ergebnissatz abrufen, nur gültig, wenn die Zeigerfunktion verfügbar ist
PDO::FETCH_ORI_REL
Die Daten einer Zeile danach abrufen die aktuelle Zeile in der Ergebnismenge, die nur gültig ist, wenn eine Zeigerfunktion vorhanden ist
PDO::CURSOR_FWDONLY
Erstellt ein Nur-Rückwärts-Zeigeroperationsobjekt
PDO::CURSOR_SCROLL
Erstellt eine Zeigeroperation Objekt und übergeben Sie den Inhalt in PDO::FETCH_ORI_*, um die Ergebnismenge zu steuern
PDO::ERR_NONE (string)
Legen Sie die Fehlermeldung fest, wenn kein Fehler vorliegt
PDO::PARAM_EVT_ALLOC
Zuordnungsereignis
PDO::PARAM_EVT_FREE
Deallocation-Ereignis
PDO::PARAM_EVT_EXEC_PRE
Ereignis wird vor der Ausführung einer vorbereiteten Anweisung ausgelöst.
PDO::PARAM_EVT_EXEC_POST
Ereignis wird nach der Ausführung einer vorbereiteten Anweisung ausgelöst.
PDO::PARAM_EVT_FETCH_PRE
Ereignis wird vor f ausgelöst Ätzen eines Ergebnisses aus einem Ergebnissatz .
PDO::PARAM_EVT_FETCH_POST
Ereignis wird nach dem Abrufen eines Ergebnisses aus einem Ergebnissatz ausgelöst.
PDO::PARAM_EVT_NORMALIZE
Ereignis wird während der Registrierung gebundener Parameter ausgelöst, sodass der Treiber den Parameternamen normalisieren kann.

更多PHP PDO函数库详解相关文章请关注PHP中文网!

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