首页 >数据库 >mysql教程 >为什么我的 PDO 准备语句无法将数据插入 MySQL?

为什么我的 PDO 准备语句无法将数据插入 MySQL?

Barbara Streisand
Barbara Streisand原创
2025-01-13 06:14:42161浏览

Why Are My PDO Prepared Statements Failing to Insert Data into MySQL?

对 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn