使用带有 PDO 的预准备语句执行 MySQL INSERT 查询
在 PHP 数据对象 (PDO) 领域,尝试执行 MySQL INSERT 查询时可能会遇到困难通过准备好的语句执行 SQL 查询。一个常见问题涉及使用 INSERT INTO 语句向数据库添加记录。
考虑以下代码:
$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();
此代码尝试将新记录插入到 testtable 表中MySQL 数据库。但是,数据库仍然是空的。
要解决此问题,您需要使用参数化查询,而不是直接将值嵌入到 SQL 语句中。参数化查询使用占位符 (?) 或命名参数 (:parameter) 来表示值,然后在执行期间将其绑定到实际值。这种方法可以防止 SQL 注入攻击并确保数据验证。
使用 INSERT INTO 准备好的语句的正确方法如下:
$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', ]);
通过使用参数化查询,您可以保护您的应用程序免受恶意输入并确保您的数据完整性。
以上是如何正确使用带有 PDO 的预准备语句进行 MySQL INSERT 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!