note 114029 added to mysqli-stmt.bind-param
| From: | Polmac:) | 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