将准备好的语句与 INSERT INTO 合并
在遍历 PHP 的迷宫深处:数据对象时,在尝试执行 MySQL 时出现了一个令人困惑的难题使用准备好的语句进行查询,特别是用于 INSERT INTO 操作。考虑下面的代码片段:
$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();
尽管遵循了所谓的规定方法,数据库仍然顽固地保持着荒凉。让我们探索阻碍我们进步的缺失元素。
释放 INSERT INTO 查询准备语句潜力的关键在于参数绑定,这是一种允许将值安全且动态地集成到查询中的技术。 SQL 语句。这是通过将占位符合并到查询中并随后在执行期间以关联数组的形式提供相应的值来实现的。
观察修改后的代码:
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);
注意参数名称的存在,'查询中的 :fname'、':sname' 和 ':age'。这些用作实际值的占位符,然后在execute() 函数中作为关联数组提供。
或者,您可以使用“?”语法作为占位符并传递值数组而不指定参数名称:
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);
两种方法都有各自的优点和缺点。使用命名参数可以增强可读性,而“?”语法简化了绑定值的过程。不过,最终两者之间的选择取决于个人喜好。
以上是如何在 PHP 中正确使用 INSERT INTO 准备好的语句?的详细内容。更多信息请关注PHP中文网其他相关文章!