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

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

Barbara Streisand
发布: 2025-01-13 06:14:42
原创
127 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板