Heim > Artikel > Web-Frontend > Zusammenfassung der Fähigkeiten von PHP PDO Operations_Javascript
0x01: Testen Sie, ob PDO erfolgreich installiert wurde
Führen Sie den folgenden Code aus. Wenn der Parameterfehler angezeigt wird, wurde PDO installiert. Wenn das Objekt nicht vorhanden ist, ändern Sie die PHP-Konfigurationsdatei php.ini und löschen Sie den Kommentar vor php_pdo_yourssqlserverhere.extis.
0x02: Mit Datenbank verbinden
Führen Sie den Apache-Server aus, stellen Sie sicher, dass der Server läuft und PDO erfolgreich installiert wurde, und stellen Sie dann eine Verbindung zur Datenbank her.
0x03: Basisabfrage
Die Verwendung von Abfrage- und Exec-Methoden in PDO macht die Datenbankabfrage sehr einfach. Wenn Sie die Anzahl der Zeilen im Abfrageergebnis ermitteln möchten, ist exec sehr einfach zu verwenden und daher für SELECT-Abfrageanweisungen sehr nützlich.
0x04: Anzahl der Zeilen ermitteln
Wenn Sie eine MySQL-Datenbank verwenden, enthält die PDO-Anweisung eine rowCount-Methode, um die Anzahl der Zeilen im Ergebnissatz abzurufen, wie im folgenden Code gezeigt:
0x05: Durchlaufen der Ergebnismenge
PDO-Statment kann mit der forech-Anweisung durchlaufen werden, wie im folgenden Code gezeigt:
0x06: Vom Benutzer eingegebene Escape-Sonderzeichen
PDO bietet eine Methode namens quote, die Sonderzeichen an Stellen mit Anführungszeichen in der Eingabezeichenfolge maskieren kann.
0x07: exec()
PDO kann die Methode exec() verwenden, um UPDATE-, DELETE- und INSERT-Operationen zu implementieren. Nach der Ausführung gibt es die Anzahl der betroffenen Zeilen zurück:
0x08: Vorbereitete Anweisung
Obwohl Exec-Methoden und -Abfragen in PHP immer noch weit verbreitet sind und unterstützt werden, verlangt die offizielle PHP-Website immer noch, dass jeder stattdessen vorbereitete Anweisungen verwendet. Warum? Vor allem, weil: es sicherer ist. Vorbereitete Anweisungen fügen Parameter nicht direkt in die eigentliche Abfrage ein, wodurch viele potenzielle SQL-Injections vermieden werden.
Aus irgendeinem Grund verwendet PDO jedoch keine Vorverarbeitung. Es simuliert die Vorverarbeitung und fügt Parameterdaten in die Anweisung ein, bevor sie an den SQL-Server übergeben wird. Dadurch ist das System anfällig für SQL-Injection.
Wenn Ihr SQL-Server die Vorverarbeitung nicht wirklich unterstützt, können wir dieses Problem leicht beheben, indem wir Parameter während der PDO-Initialisierung wie folgt übergeben:
Hier ist unsere erste vorbereitete Stellungnahme:
Wie im obigen Code gezeigt, gibt es zwei Möglichkeiten, Parameter zu erstellen: benannte und anonyme (können nicht gleichzeitig in einer Anweisung erscheinen). Sie können dann bindValue verwenden, um Ihre Eingabe einzugeben:
$statement2->bindValue(':name', 'Pie');
$statement2->bindValue(':healthy', false);
Beachten Sie, dass Sie bei der Verwendung benannter Parameter einen Doppelpunkt (:) einfügen müssen. PDO verfügt außerdem über eine bindParam-Methode, die Werte per Referenz binden kann, was bedeutet, dass nur bei Ausführung der Anweisung nach dem entsprechenden Wert gesucht wird.
Jetzt müssen wir nur noch unsere Aussage ausführen:
Um die Codefragmentierung zu vermeiden, die durch die alleinige Verwendung von bindValue verursacht wird, können Sie ein Array als Parameter für die Ausführungsmethode verwenden, etwa so:
0x09: Transaktion
Eine Transaktion führt eine Reihe von Abfragen aus, speichert deren Auswirkungen jedoch nicht in der Datenbank. Dies hat den Vorteil, dass Sie, wenn Sie vier voneinander abhängige Einfügeanweisungen ausführen und eine davon fehlschlägt, ein Rollback durchführen können, sodass keine anderen Daten in die Datenbank eingefügt werden können, um sicherzustellen, dass voneinander abhängige Felder korrekt eingefügt werden können. Sie müssen sicherstellen, dass die von Ihnen verwendete Datenbank-Engine Transaktionen unterstützt.
0x10: Transaktion starten
Sie können einfach die Methode beginTransaction() verwenden, um eine Transaktion zu starten:
Dann können Sie mit der Ausführung Ihrer Datenbankbetriebsanweisungen fortfahren und die Transaktion am Ende festschreiben:
Es gibt auch eine Methode ähnlich der rollBack() in MySQLi, die jedoch nicht alle Typen zurücksetzt (z. B. die Verwendung von DROP TABLE in MySQL). Ich empfehle, sich nicht darauf zu verlassen Verfahren.
0x11: Weitere nützliche Optionen
Es gibt mehrere Optionen, die Sie in Betracht ziehen können. Diese können bei der Initialisierung Ihres Objekts als vierter Parameter eingegeben werden.
PDO::ATTR_DEFAULT_FETCH_MODE
Sie können auswählen, welche Art von Ergebnismenge das PDO zurückgibt, z. B. PDO::FETCH_ASSOC, das Ihnen die Verwendung von $result['column_name'] ermöglicht, oder PDO::FETCH_OBJ, das ein anonymes Objekt für Sie zurückgibt um $result->column_name
zu verwendenSie können die Ergebnisse auch einer bestimmten Klasse (Modell) zuordnen, indem Sie für jede einzelne Abfrage einen Lesemodus festlegen, wie folgt:
PDO::ATTR_ERRMODE
Wir haben dies bereits oben erklärt, aber Leute, die TryCatch mögen, müssen Folgendes verwenden: PDO::ERRMODE_EXCEPTION. Wenn Sie aus irgendeinem Grund eine PHP-Warnung auslösen möchten, verwenden Sie PDO::ERRMODE_WARNING.
PDO::ATTR_TIMEOUT
Wenn Sie sich Sorgen über die Ladezeit machen, können Sie dieses Attribut verwenden, um eine Zeitüberschreitung für Ihre Abfrage in Sekunden anzugeben. Beachten Sie, dass bei Überschreitung der von Ihnen festgelegten Zeit standardmäßig eine E_WARNING-Ausnahme ausgelöst wird, es sei denn, PDO:: ATTR_ERRMODE wurde geändert.