Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果在循环中使用MySQLi prepared语句,何时调用bind_param?_Php_Mysql_Loops_Mysqli - Fatal编程技术网

Php 如果在循环中使用MySQLi prepared语句,何时调用bind_param?

Php 如果在循环中使用MySQLi prepared语句,何时调用bind_param?,php,mysql,loops,mysqli,Php,Mysql,Loops,Mysqli,我正在尝试学习如何将准备好的语句与MySQLi一起使用来插入数据 尽管准备好的语句能够高效地重复执行类似的语句而备受赞誉,但我似乎找不到使用MySQLi在循环中执行多个语句的例子。我对以下几点尤其感到困惑: 是在我的循环之前还是在我的循环内部调用bind_param 调用bind_param 关于预处理语句的大多数教程都使用PDO。使用PDO,可以将一组参数值传递给execute,无需调用bindParam。MySQLi并非如此 PHP手动输入的示例显示了以下操作顺序: 为变量赋值 准备报表

我正在尝试学习如何将准备好的语句与MySQLi一起使用来插入数据

尽管准备好的语句能够高效地重复执行类似的语句而备受赞誉,但我似乎找不到使用MySQLi在循环中执行多个语句的例子。我对以下几点尤其感到困惑:

  • 是在我的循环之前还是在我的循环内部调用
    bind_param
  • 调用
    bind_param
关于预处理语句的大多数教程都使用PDO。使用PDO,可以将一组参数值传递给
execute
,无需调用
bindParam
。MySQLi并非如此

PHP手动输入的示例显示了以下操作顺序:

  • 为变量赋值
  • 准备报表
  • 绑定变量
  • 执行
  • 接近
  • 根据上面的判断,我假设需要在循环中调用bind语句

    但是,PHP手动输入有一个示例,显示了以下操作顺序:

  • 准备报表
  • 绑定变量
  • 为变量赋值
  • 执行
  • 为变量赋值
  • 执行
  • 接近
  • 请注意,本例没有显示的一点是变量首先声明的位置。我认为将未声明的变量传递给
    bind_param
    会生成一个通知。我最终发现我可以传递未定义的变量,因为它们是通过引用传递的

    问题
    一种操作顺序是否优于另一种?还是仅仅取决于你在做什么?其中一个有问题吗


    注意:代码已经使用了MySQLi,我不想切换到PDO(现在切换不在本项目的范围内)。

    因为参数是通过引用传递的,所以可以在调用
    bind_param
    之前或之后将值分配给变量。任何一种方法都会奏效

    如果变量是按值传递的,那么每次更改它们的值时都需要绑定它们。但是,由于它们是通过引用传递的,所以只需要绑定它们一次


    在单次执行的情况下,操作顺序实际上并不重要,可能取决于值的来源在循环的情况下,您一定要在循环之前调用
    bind_param

    您在循环什么?您可以调用
    bind_param
    ,然后在循环中执行
    。我想我还没有完全理解这个问题。你肯定应该在
    bind\u param
    之前设置变量。这将使调试变得更容易。我的困惑源于“按值传递”的思维定势。我一直在想,我应该在更改值后重新绑定它们。