PDO 中 INSERT INTO 的准备语句错误
在处理 PDO 的复杂性时,您可能会在使用 MySQL 查询的准备语句时遇到困难。考虑以下代码:
$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();
尽管采用了这种方法,您的数据库仍然是空的。
解决方案在于适当使用准备好的语句。相反,请使用以下内容:
$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', ]);
准备好的语句提供输入清理。在 SQL 语句中使用“:parameter”占位符,并在“execute”函数中传递这些参数的关联数组。或者,使用“?”占位符并传递值数组。
两种方法各有利弊。绑定参数名称可以增强可读性,而后一种方法可以简化代码。
以上是为什么我的 PDO 准备语句无法插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!