Heim >Datenbank >MySQL-Tutorial >Warum können meine vorbereiteten PDO-Anweisungen keine Daten in MySQL einfügen?

Warum können meine vorbereiteten PDO-Anweisungen keine Daten in MySQL einfügen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-13 06:14:42161Durchsuche

Why Are My PDO Prepared Statements Failing to Insert Data into MySQL?

Fehlerbehebung bei PDO-vorbereiteten Anweisungseinfügungen in MySQL

Die Verwendung von PHPs PDO mit vorbereiteten MySQL-Anweisungen bietet Sicherheit und Effizienz, es können jedoch Einfügeprobleme auftreten. Diese Anleitung befasst sich mit einem häufigen Problem: fehlgeschlagene Einfügungen trotz scheinbar korrektem Code.

Das Problem: Leere Datenbank nach einem INSERTVersuch

Untersuchen wir ein Szenario, in dem ein INSERT, der eine vorbereitete Anweisung verwendet, die Datenbank nicht auffüllt:

<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')");
$statement->execute();</code>

Dieser Code scheint funktionsfähig zu sein, das testtable bleibt jedoch leer.

Die Lösung: Parameterbindung

Die Lösung besteht in der korrekten Bindung von Parametern. PDO-vorbereitete Anweisungen erfordern Platzhalter – entweder benannte Parameter (:param) oder Fragezeichen (?) – innerhalb der SQL-Abfrage. Diese Platzhalter werden dann während der execute()-Methode.

mit Werten gefüllt

So beheben Sie den Code mit beiden Methoden:

<code class="language-php">// Using Named Parameters
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)');
$statement->execute(['fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18']);

// Using Question Mark Placeholders
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);</code>

Durch die Verwendung der Parameterbindung stellen Sie sicher, dass Daten sicher eingefügt werden, wodurch SQL-Injection-Risiken gemindert und die Datenintegrität aufrechterhalten wird. Die Werte werden während der Ausführung korrekt in die Abfrage eingesetzt.

Das obige ist der detaillierte Inhalt vonWarum können meine vorbereiteten PDO-Anweisungen keine Daten in MySQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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