tox*_*lot 4 php mysql mysqli loops
我正在尝试学习如何在MySQLi中使用准备好的语句来插入数据。
即使准备好的语句因有效地重复执行相似的语句而受到赞扬,我似乎也找不到使用MySQLi在循环中执行多个语句的示例。我对以下内容特别困惑:
bind_param在循环之前还是在循环内部调用bind_param关于准备好的语句的大多数教程都使用PDO。使用PDO,可以将参数值数组传递给它execute,而无需调用bindParam。MySQLi并非如此。
PHP手册mysqli_prepare条目有一个示例,显示了以下操作顺序:
从以上判断,我假设我需要在循环中调用bind语句。
但是,PHP手册mysqli_stmt_execute条目有一个示例,显示了以下操作顺序:
请注意,此示例未显示的一件事是变量的首次声明位置。我认为传递未声明的变量bind_param会产生通知。我终于弄清楚了我可以传递未定义的变量,因为它们是通过引用传递的。
问题:
一个操作顺序是否比另一个操作顺序优先?还是仅取决于您在做什么?彼此之间有麻烦吗?
注意:该代码已经使用MySQLi,并且我不想切换到PDO(现在切换不在此项目范围内)。
由于参数是通过引用传递的,因此您可以在调用之前或之后将值分配给变量bind_param。无论哪种方式都可以。
如果变量是通过value传递的,则每次更改它们的值时都需要绑定它们。但是,由于它们是通过引用传递的,因此只需绑定一次即可。
在单次执行的情况下,操作顺序并不重要,它可能取决于值的来源。在循环的情况下,您绝对应该bind_param在循环之前调用。