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 使用占位符,而不是直接嵌入值:
:name
等占位符,并将关联数组中的值提供给 execute()
。?
作为占位符,并将数字索引数组中的值提供给 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中文网其他相关文章!