首页 >数据库 >mysql教程 >为什么我的 PDO INSERT INTO 准备好的语句不起作用?

为什么我的 PDO INSERT INTO 准备好的语句不起作用?

Linda Hamilton
Linda Hamilton原创
2025-01-13 07:14:42519浏览

Why Doesn't My PDO INSERT INTO Prepared Statement Work?

将 PDO 准备好的语句与 MySQL INSERT INTO 查询结合使用

PHP 数据对象 (PDO) 提供了用于安全 MySQL 交互的准备好的语句,但构建 INSERT INTO 查询可能具有挑战性。 让我们解决一个常见问题及其解决方案。

考虑这段代码:

<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')");
$statement->execute();</code>

这个看似正确的代码通常无法填充数据库。 为什么?

缺失的环节:参数绑定

关键是参数绑定。 这可以防止 SQL 注入漏洞并提高代码的可维护性。 PDO 使用占位符,而不是直接嵌入值:

  1. 命名参数: 在 SQL 中使用 :name 等占位符,并将关联数组中的值提供给 execute()
  2. 位置参数: 使用 ? 作为占位符,并将数字索引数组中的值提供给 execute()

使用参数绑定更正代码

这是使用命名参数的更正代码:

<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (:name, :lastname, :age)");
$statement->execute([
    'name' => 'Bob',
    'lastname' => 'Desaunois',
    'age' => '18',
]);</code>

这是使用位置参数的等效方法:

<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (?, ?, ?)");
$statement->execute(['Bob', 'Desaunois', '18']);</code>

参数绑定的优点

参数绑定增强了数据库安全性,并使您的代码更加高效和可读。 这对于 PDO 的稳健使用至关重要。 掌握这项技术对于安全有效的 PHP 数据库编程至关重要。

以上是为什么我的 PDO INSERT INTO 准备好的语句不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

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