我正在尝试学习如何将准备好的语句与 MySQLi 一起使用来插入数据。
尽管准备好的语句因其能够有效地重复执行类似语句而受到称赞,但我似乎无法找到使用 MySQLi 在循环中执行多个语句的示例。我对以下内容特别困惑:
bind_param
是在我的循环之前还是在我的循环内调用- 是否在调用之前或之后为我的变量赋值
bind_param
大多数关于准备好的语句的教程都使用 PDO。使用 PDO,可以将一组参数值传递给execute
,而无需调用bindParam
. MySQLi 并非如此。
PHP 手册mysqli_prepare
条目有一个示例,显示了以下操作顺序:
- 给变量赋值
- 准备声明
- 绑定变量
- 执行
- 关
从以上判断,我假设我需要在循环中调用绑定语句。
但是,PHP 手册mysqli_stmt_execute
条目有一个示例,显示了以下操作顺序:
- 准备声明
- 绑定变量
- 给变量赋值
- 执行
- 给变量赋值
- 执行
- 关
请注意,此示例未显示的一件事是首次声明变量的位置。我认为将未声明的变量传递给bind_param
会生成一个通知。我终于发现我可以传递未定义的变量,因为它们是通过引用传递的。
问题:
一种操作顺序是否优于另一种操作顺序?还是仅仅取决于你在做什么?其中一个有什么问题吗?
注意:代码已经使用 MySQLi,我不想切换到 PDO(现在切换超出了本项目的范围)。