将准备好的语句与 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']);
两种方法都有各自的优点和缺点。使用命名参数可以增强可读性,而“?”语法简化了绑定值的过程。然而,最终两者之间的选择取决于个人喜好。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3