PHP/mysqli – 预处理语句(在循环中)或multi_query

我刚从PHP中使用mysql到mysqli扩展.

我遇到过两种做同样事情的方法(多次更新查询),每种方法的优点/缺点是什么?我应该完全使用其中一种还是其他东西?

循环中准备好的语句:

//prepare statement
foreach(whatever){
  //execute statement
}

要么

多查询:

foreach(whatever){
  //build many queries into a single string
}
multi_query(long string)

我知道准备好的陈述提供了更好的安全性
在PHP中使用mysql时我听说最好避免在循环中使用UPDATE语句 – 是不是在循环中执行mysqli预处理语句的另一个名称相同的东西?

最佳答案
如果由于某种原因你不能只用一个mysql更新语句来更新所有目标记录,以避免完全需要这个PHP循环,那么在循环中重用这个相同的更新mysqli语句对象是完全没错的.

风格和资源方面,重用参数化语句是最好的,而不是不断地重新创建它.通过重用它,在初始bind_param调用之后你所做的就是在每次迭代时重新分配绑定的PHP变量的值,然后简单地重新执行(参见:mysqli_stmt->execute Example #1 Object oriented style).

请记住,在WHERE子句中,您只需要另一个PHP变量赋值参数(如WHERE(recordID =?))进行迭代.

初始设置每个参数化语句需要额外的资源,因此应保留多个参数化语句以传递多个不相关的语句或查询.此外,似乎PHP的多查询函数和方法无论如何都不支持参数化.

转载注明原文:PHP/mysqli – 预处理语句(在循环中)或multi_query - 代码日志