note 114029 added to mysqli-stmt.bind-param

From: Date: Thu, 02 Jan 2014 21:36:55 +0000
Subject: note 114029 added to mysqli-stmt.bind-param
Groups: php.notes 
Request: Send a blank email to php-notes+get-198084@lists.php.net to get a copy of this message
Bueno antes que nada quiero que sepan que ese tema de usar el fastidioso call_user_func_array ya me estaba desesperando pero puedo aportarles que es bien simple usarlo con el bindparam hasta lógico, cuando en la documentación dice que se debe pasar por referencia los valores no es otra cosa mas que pasar la dirección de memoria del valor que deseamos agregar, por lo tanto al igual que en C, C++ y otros lenguajes si mandamos un arreglo que contiene por ejemplo una variable con el valor: $valor="juan"; de la siguiente manera: $miArreglo; $miArreglo[]=$valor; lo que le estamos agregando al array es el valor de $valor pero la función bindparam requiere referencias (o direcciones de memoria) por lo que la manera correcta de agregar la referencia es la siguiente: $miArreglo; $miArreglo[]=&$valor; //si se dan cuenta solo agregue un & al inicio de la variable tan sencillo como eso por lo tanto si quieren construir un arreglo que mande los valores a bindparam con esta función es tan fácil como hace lo siguiente sin tener que fusionar 2 arreglos ni nada de esas cosas locas que postean aquí: $miArreglo; $miArreglo[]=@'ssss';//se pueden colocar por un foreach o concatenación o validaciones o lo que gsuten pero el primer argumento del arreglo va sin & pues debe ser un string es decir el valor y asegurar que es un string con el @ //Ahora mandamos todas las variables con su valor correspondiente por referencia $miArreglo[]=&$mivariable_con_valor1; $miArreglo[]=&$mivariable_con_valor2; $miArreglo[]=&$mivariable_con_valor3; $miArreglo[]=&$mivariable_con_valor4; if($condicion1){ $miArreglo[]=&$mivariable_con_valor5;//mandamos un valor mas pero solo si se cumple $condicion1 obvio debemos manejar esta condición de acuerdo a necesidades } call_user_func_array(array($stmt, 'bind_param'),$miArreglo); Tomen en cuenta que este solo es un ejemplo de la parte de bindparam todo lo demás: la conexión, la preparación de la consulta y demás lo pueden sacar de la documentación ya que eso es muy claro, espero que les sirva a los que tienen la misma duda que yotuve y el mismo problema con esto de las referencias :s ---- Server IP: 72.52.91.14 Probable Submitter: 72.52.91.14 ---- Manual Page -- http://php.net/manual/en/mysqli-stmt.bind-param.php Edit -- https://master.php.net/note/edit/114029 Del: integrated -- https://master.php.net/note/delete/114029/integrated Del: useless -- https://master.php.net/note/delete/114029/useless Del: bad code -- https://master.php.net/note/delete/114029/bad+code Del: spam -- https://master.php.net/note/delete/114029/spam Del: non-english -- https://master.php.net/note/delete/114029/non-english Del: in docs -- https://master.php.net/note/delete/114029/in+docs Del: other reasons-- https://master.php.net/note/delete/114029 Reject -- https://master.php.net/note/reject/114029 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#198084) next »