Fügen Sie mithilfe von MySQLi und PDO mehrere Datenelemente in MySQL ein
Mit der Funktion mysqli_multi_query() können mehrere SQL-Anweisungen ausgeführt werden.
Das folgende Beispiel fügt der Tabelle „MyGuests“ drei neue Datensätze hinzu:
Beispiel (MySQLi – Objektorientiert)
<?php $ servername = " localhost " ; $ username = " username " ; $ dbname = " myDB " ;$conn = neu mysqli ( $servername , $username , $password , $dbname ) ; // Überprüfen Sie den Link Wenn ( $conn -> connect_error ) { die ( " Verbindung fehlgeschlagen: " . $conn - > connect_error ) ; $ sql = " INSERT INTO MyGuests (Vorname, Nachname, E-Mail)VALUES
( ' John', 'Doe', '[email protected]'); " ; INSERT INTO MyGuests (Vorname, Nachname, E-Mail) VALUES ('Mary', 'Moe', '[email protected]'); " ; $sql .= " INSERT INTO MyGuests (Vorname, Nachname, E-Mail)VALUES ('Julie', 'Dooley', '[email protected]') " ; if ( $conn -> multi_query ( $sql ) === TRUE ) { Echo „ Neuer
Datensatz erfolgreich eingefügt “ ; anders { Echo " Fehler : " . $ sql . $conn -> close ( ) ; > | Bitte beachten Sie, dass jede SQL-Anweisung durch ein Semikolon getrennt werden muss. |
---|
Beispiel (MySQLi – Prozedurorientiert)
<?php $ servername = " localhost " ; $ username = " username " ; $ dbname = " myDB " ;$conn = mysqli_connect ( $servername , $username , $password , $dbname ) ; // Überprüfen Sie den Link Wenn ( ! $conn ) { die ( " Verbindung fehlgeschlagen : " . mysqli_connect_error ( ) ) ; $ sql = " INSERT INTO MyGuests (Vorname, Nachname, E-Mail)VALUES
( ' John', 'Doe', '[email protected]'); " ; INSERT INTO MyGuests (Vorname, Nachname, E-Mail) VALUES ('Mary', 'Moe', '[email protected]'); " ; $sql .= " INSERT INTO MyGuests (Vorname, Nachname, E-Mail)VALUES ('Julie', 'Dooley', '[email protected]') " ; if ( mysqli_multi_query ( $conn , $sql ) ) { Echo „ Neuer
Datensatz erfolgreich eingefügt “ ; anders { Echo " Fehler : " . $ sql . mysqli_close ( $conn ) ; > Beispiel (PDO)
<?php $ servername = " localhost " ; $ password = " myDBPDO " ;{ $conn = neu PDO ( " mysql:host= $servername ;dbname= $dbname " , $username , $password ) ; // den PDO-Fehlermodus auf Ausnahme setzen $conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) ; // Transaktion starten $conn -> beginTransaction ( ) ; // SQL-Anweisung $conn -> exec ( " INSERT INTO MyGuests (Vorname, Nachname, E-Mail) VALUES ('John', 'Doe', '[email protected]') " ) ; $ conn
-> exec ( " INSERT INTO MyGuests (Vorname , Nachname, E-Mail) VALUES ('Mary', 'Moe', '[email protected]') " ) ; $conn -> exec ( „ INSERT INTO MyGuests (Vorname, Nachname, E-Mail) VALUES (‚
Julie ‘
, ‚Dooley‘, ‚[email protected]‘) “ ) ; $conn -> commit ( ) ; echo „ Neuer
Datensatz erfolgreich eingefügt “ ; Catch ( PDOException $e ) { // Wenn die Ausführung fehlschlägt, Rollback $conn -> rollback ( ) ; echo $ sql . " <br> " $e - > getMessage ( ) ; $conn = null ? > Verwenden Sie vorbereitete Aussagen
Die MySQLi-Erweiterung bietet eine zweite Möglichkeit zum Einfügen von Anweisungen.
Wir können Anweisungen vorbereiten und Parameter binden.
Die MySQL-Erweiterung kann Anweisungen oder Abfragen ohne Daten an die MySQL-Datenbank senden. Sie können Variablen nematisch verknüpfen oder „binden“.
Beispiel (MySQLi verwendet vorbereitete Anweisungen)
<?php $ servername = " localhost " ; $ username = " username " ; $ dbname = " myDB " ;$conn = neu mysqli ( $servername , $username , $password , $dbname ) ; // Verbindung erkennen Wenn ( $conn -> connect_error ) { die ( " Verbindung fehlgeschlagen: " . $conn - > connect_error ) ; anders { $sql = " INSERT INTO MyGuests(firstname, lastname, email) VALUES(?, ?, ?) " // Anweisungsobjekt für mysqli_stmt_prepare() initialisieren ; $stmt = mysqli_stmt_init ( $conn ) ; // Vorverarbeitungsanweisung Wenn ( mysqli_stmt_prepare ( $stmt , $sql ) ) { // Parameter binden mysqli_stmt_bind_param ( $stmt , ' sss ' , $firstname , $lastname , $email ) ; // Parameter festlegen und ausführen $ firstname = ' John ' ; $ email = ' [email protected] ' ; $ firstname = ' Mary ' ; @ example.com ' ; mysqli_stmt_execute ( $ stmt ) ; ; $ email = ' [email protected] ' ;} ?> Wir können sehen, dass in den obigen Beispielen Modularität zur Lösung von Problemen verwendet wird. Durch die Erstellung von Codeblöcken können wir das Lesen und Verwalten erleichtern.
Achten Sie auf die Bindung von Parametern. Schauen wir uns den Code in mysqli_stmt_bind_param() an:
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
Diese Funktion bindet die Parameterabfrage und übergibt die Parameter an die Datenbank. Der zweite Parameter ist „sss“. Die folgende Liste zeigt die Parametertypen. Das s-Zeichen teilt MySQL mit, dass der Parameter eine Zeichenfolge ist.
Es können die folgenden vier Parameter sein:
i - Ganzzahl
d – Gleitkommazahl mit doppelter Genauigkeit
s - Zeichenfolge
b – Boolescher Wert
Jeder Parameter muss einen Typ angeben, um die Datensicherheit zu gewährleisten. Typbeurteilung kann das Risiko von SQL-Injection-Schwachstellen verringern.