PHP Data Objects (PDO) bietet vorbereitete Anweisungen für eine sichere MySQL-Interaktion, aber das Erstellen von INSERT INTO
Abfragen kann eine Herausforderung sein. Lassen Sie uns ein häufiges Problem und seine Lösung ansprechen.
Beachten Sie diesen Code:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
Dieser scheinbar korrekte Code schafft es oft nicht, die Datenbank zu füllen. Warum?
Der Schlüssel ist die Parameterbindung. Dies verhindert SQL-Injection-Schwachstellen und verbessert die Wartbarkeit des Codes. Anstatt Werte direkt einzubetten, verwendet PDO Platzhalter:
:name
in der SQL und stellen Sie Werte in einem assoziativen Array für execute()
bereit.?
als Platzhalter und geben Sie Werte in einem numerisch indizierten Array an execute()
an.Hier ist der korrigierte Code mit benannten Parametern:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (:name, :lastname, :age)"); $statement->execute([ 'name' => 'Bob', 'lastname' => 'Desaunois', 'age' => '18', ]);</code>
Und hier ist das Äquivalent unter Verwendung von Positionsparametern:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (?, ?, ?)"); $statement->execute(['Bob', 'Desaunois', '18']);</code>
Parameterbindung erhöht die Datenbanksicherheit und macht Ihren Code effizienter und lesbarer. Dies ist für eine robuste PDO-Nutzung unerlässlich. Die Beherrschung dieser Technik ist für eine sichere und effektive PHP-Datenbankprogrammierung von entscheidender Bedeutung.
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein PDO INSERT INTO Prepared Statement nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!