Heim > Datenbank > MySQL-Tutorial > Warum funktioniert mein PDO INSERT INTO Prepared Statement nicht?

Warum funktioniert mein PDO INSERT INTO Prepared Statement nicht?

Linda Hamilton
Freigeben: 2025-01-13 07:14:42
Original
524 Leute haben es durchsucht

Why Doesn't My PDO INSERT INTO Prepared Statement Work?

Verwenden von PDO-vorbereiteten Anweisungen mit MySQL INSERT INTO-Abfragen

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>
Nach dem Login kopieren

Dieser scheinbar korrekte Code schafft es oft nicht, die Datenbank zu füllen. Warum?

Das fehlende Glied: Parameterbindung

Der Schlüssel ist die Parameterbindung. Dies verhindert SQL-Injection-Schwachstellen und verbessert die Wartbarkeit des Codes. Anstatt Werte direkt einzubetten, verwendet PDO Platzhalter:

  1. Benannte Parameter: Verwenden Sie Platzhalter wie :name in der SQL und stellen Sie Werte in einem assoziativen Array für execute() bereit.
  2. Positionsparameter: Verwenden Sie ? als Platzhalter und geben Sie Werte in einem numerisch indizierten Array an execute() an.

Korrigierter Code mit Parameterbindung

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Vorteile der Parameterbindung

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage