Heim > Artikel > Backend-Entwicklung > Wie verwende ich vorbereitete Anweisungen mit PDO für MySQL-INSERT-Abfragen richtig?
Ausführen von MySQL-INSERT-Abfragen mithilfe vorbereiteter Anweisungen mit PDO
Im Bereich der PHP-Datenobjekte (PDO) können beim Versuch Schwierigkeiten auftreten Führen Sie SQL-Abfragen über vorbereitete Anweisungen aus. Ein häufiges Problem besteht darin, die INSERT INTO-Anweisung zu verwenden, um Datensätze zu einer Datenbank hinzuzufügen.
Bedenken 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();
Dieser Code versucht, einen neuen Datensatz in die Testtabellentabelle einzufügen MySQL-Datenbank. Die Datenbank bleibt jedoch leer.
Um dieses Problem zu beheben, müssen Sie parametrisierte Abfragen verwenden, anstatt Werte direkt in die SQL-Anweisung einzubetten. Parametrisierte Abfragen verwenden Platzhalter (?) oder benannte Parameter (:parameter) zur Darstellung von Werten, die dann während der Ausführung an tatsächliche Werte gebunden werden. Dieser Ansatz verhindert SQL-Injection-Angriffe und stellt die Datenvalidierung sicher.
Die korrekte Verwendung vorbereiteter Anweisungen mit INSERT INTO ist wie folgt:
$dbhost = 'localhost'; $dbname = 'pdo'; $dbusername = 'root'; $dbpassword = '845625'; $link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword); $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', ]);
Durch die Verwendung parametrisierter Abfragen schützen Sie Ihre Anwendung vor böswillige Eingaben und stellen Sie die Integrität Ihrer Daten sicher.
Das obige ist der detaillierte Inhalt vonWie verwende ich vorbereitete Anweisungen mit PDO für MySQL-INSERT-Abfragen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!