Fehler bei vorbereiteten Anweisungen mit INSERT INTO in PDO
Beim Navigieren durch die Komplexität von PDO können bei der Verwendung vorbereiteter Anweisungen für MySQL-Abfragen Schwierigkeiten auftreten. Betrachten Sie den folgenden Code:
$dbhost = "localhost"; $dbname = "pdo"; $dbusername = "root"; $dbpassword = "845625"; $link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword"); $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();
Trotz dieser Vorgehensweise bleibt Ihre Datenbank leer.
Die Lösung liegt in der entsprechenden Verwendung vorbereiteter Anweisungen. Verwenden Sie stattdessen Folgendes:
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);
Vorbereitete Anweisungen sorgen für eine Bereinigung der Eingaben. Verwenden Sie „:parameter“-Platzhalter in Ihrer SQL-Anweisung und übergeben Sie ein assoziatives Array dieser Parameter in der Funktion „execute“. Alternativ können Sie auch „?“ verwenden. Platzhalter und übergeben Sie ein Array von Werten.
Beide Methoden bieten Vor- und Nachteile. Das Binden von Parameternamen verbessert die Lesbarkeit, während die letztere Methode den Code vereinfacht.
Das obige ist der detaillierte Inhalt vonWarum können meine vorbereiteten PDO-Anweisungen nicht in MySQL eingefügt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!