使用 PDO 时,通过准备好的语句执行 MySQL 查询可能会有点棘手。让我们深入研究所提出的问题并找出解决方案:
在提供的代码中,INSERT INTO 语句是使用prepare() 方法构造的,该方法准备语句但不执行它。要实际执行查询并插入数据,必须调用execute()方法。
此外,当使用PDO准备好的语句时,必须在语句中使用占位符(例如:name、:lastname) SQL 查询而不是直接嵌入值。占位符允许您稍后将值绑定到准备好的语句。这种方法通过防止 SQL 注入漏洞来增强安全性。
更正后的代码应如下所示:
$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); // Set error mode to exception $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES(:name, :lastname, :age)"); $statement->bindParam(':name', 'Bob'); $statement->bindParam(':lastname', 'Desaunois'); $statement->bindParam(':age', 18); $statement->execute();
通过使用占位符并使用 bindParam() 绑定值,查询可以正确执行并将数据插入数据库。准备好的语句有助于防止 SQL 注入并确保数据的完整性。
以上是如何在 MySQL 中正确使用 PDO 准备语句进行 INSERT INTO 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!