对 MySQL 中的 PDO 准备语句插入进行故障排除
将 PHP 的 PDO 与 MySQL 准备好的语句结合使用可提供安全性和效率,但可能会出现插入问题。本指南解决了一个常见问题:尽管代码看似正确,但插入失败。
问题:INSERT
尝试后数据库为空
让我们检查一个场景,其中 INSERT
使用准备好的语句不会填充数据库:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
此代码看似有效,但 testtable
仍然为空。
解决方案:参数绑定
解决方案涉及正确绑定参数。 PDO 准备好的语句需要 SQL 查询中的占位符 - 命名参数 (:param
) 或问号 (?
)。 然后,在 execute()
方法期间用值填充这些占位符。
以下是使用这两种方法修复代码的方法:
<code class="language-php">// Using Named Parameters $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute(['fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18']); // Using Question Mark Placeholders $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);</code>
通过利用参数绑定,您可以确保安全插入数据,降低 SQL 注入风险并保持数据完整性。 这些值在执行期间被正确替换到查询中。
以上是为什么我的 PDO 准备语句无法将数据插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!