Heim >Backend-Entwicklung >PHP-Tutorial >Warum können meine vorbereiteten PDO-Anweisungen nicht in MySQL eingefügt werden?

Warum können meine vorbereiteten PDO-Anweisungen nicht in MySQL eingefügt werden?

DDD
DDDOriginal
2024-11-24 13:38:12655Durchsuche

Why are my PDO Prepared Statements Failing to INSERT into MySQL?

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!

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