sentencias - prepared statement php
¿Hay alguna manera de vincular una matriz a mysqli prepare (2)
Tienes que hacer algo como esto:
$params=array_merge(
array($this->paramTypes),
$this->paramValues
);
call_user_func_array(array($stmt, ''bind_param''), $params);
dado que $this->paramTypes
es una cadena en el formato requerido por mysqli_stmt::bind_param
- si no, primero tiene que crear este parámetro de string
.
No sé si out
parámetros out
o inout
funcionan en este caso.
Intento crear una clase que ejecute cualquiera de una serie de procedimientos almacenados con cualquier cantidad de variables
Estoy usando php y mysqli
- Mi clase enumera una matriz y construye una cadena en función del número de elementos, si corresponde
- dando algo como esto
CALL spTestLogin(?,?)
por ejemplo Ahora necesito vincular la entrada de mi matriz usando algo como esto:
$ stmt-> bind_param ($ this-> paramTypes, $ this-> paramValues); // paramValues es mi matriz
Entonces, si eso funciona, puedo trabajar para obtener mis resultados
Algunas ideas
mysqli_stmt::bind_param()
tomará una cantidad variable de argumentos
Asumiendo que $this->paramTypes
es también una matriz que contiene el tipo de letra correcto para cada variable (una de ''i'', ''d'', ''s'', ''b''), podrías hacer algo como
$params = $this->paramValues;
array_unshift($params, implode($this->paramTypes));
call_user_func_array( array( $stmt, ''bind_param'' ), $params);
Esencialmente, usted crea una matriz de los parámetros que normalmente pasaría a bind_param () y luego realiza la llamada usando call_user_func_array()
Puede haber una manera mucho mejor de hacer esto
Editar : me acabo de dar cuenta de que me golpearon mientras escribía esto. Dejaré esta respuesta aquí por ahora en caso de que sea de interés.