¿Cuándo llamo a bind_param si uso declaraciones preparadas de MySQLi en un bucle?
Estoy tratando de aprender a usar sentencias preparadas con MySQLi para insertar datos.
A pesar de que las declaraciones preparadas son elogiadas por su capacidad para ejecutar de manera eficiente declaraciones similares repetidamente, parece que no puedo encontrar ejemplos de ejecución de varias declaraciones en un bucle usando MySQLi. Soy especialmenteconfundido acerca de lo siguiente:
si llamarbind_param
antes de mi bucle o dentro de mi buclesi debo asignar valores a mis variables antes o después de la llamada abind_param
La mayoría de los tutoriales sobre declaraciones preparadas usan DOP. Con PDO, una matriz de valores de parámetros se puede pasar aexecute
, eliminando la necesidad de llamarbindParam
. Este no es el caso con MySQLi.
El manual de PHPmysqli_prepare
La entrada tiene un ejemplo que muestra el siguiente orden de operaciones:
A juzgar por lo anterior, había asumido que tendría que llamar a la instrucción de enlace dentro de mi bucle.
Sin embargo, el manual de PHPmysqli_stmt_execute
La entrada tiene un ejemplo que muestra el siguiente orden de operaciones:
Tenga en cuenta que una cosa que este ejemplo no muestra es dónde se declaran primero las variables. Pensé pasar variables no declaradas abind_param
generaría un aviso. Finalmente me di cuenta de que puedo pasar variables no definidas porque se pasan por referencia.
Pregunta:
¿Se prefiere una orden de operaciones sobre la otra? ¿O simplemente depende de lo que estás haciendo? ¿Hay alguna trampa con uno u otro?
Nota: El código ya usa MySQLi y no quiero cambiar a PDO (el cambio ahora está fuera del alcance de este proyecto).