我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个
我使用 php 和 mysqli
- 我的类枚举一个数组并根据元素的数量构造一个字符串(如果有)
CALL spTestLogin(?,?)
例如给出这样的东西我现在需要使用这样的东西来绑定我的数组中的输入:
$stmt->bind_param($this->paramTypes,$this->paramValues);//paramValues 是我的数组
然后,如果可行,我可以努力获得我的结果
有任何想法吗
我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个
我使用 php 和 mysqli
CALL spTestLogin(?,?)
例如给出这样的东西我现在需要使用这样的东西来绑定我的数组中的输入:
$stmt->bind_param($this->paramTypes,$this->paramValues);//paramValues 是我的数组
然后,如果可行,我可以努力获得我的结果
有任何想法吗
你必须做这样的事情:
$params=array_merge(
array($this->paramTypes),
$this->paramValues
);
call_user_func_array(array($stmt, 'bind_param'), $params);
假设这$this->paramTypes
是一个格式为所需的字符串mysqli_stmt::bind_param
- 如果不是,则必须先创建此string
参数。
我不知道在这种情况下参数是否有效out
。inout
mysqli_stmt::bind_param()
将采用可变数量的参数
假设$this->paramTypes
也是一个数组,为每个变量('i','d','s','b'之一)保存正确的类型字符,你可以做类似的事情
$params = $this->paramValues;
array_unshift($params, implode($this->paramTypes));
call_user_func_array( array( $stmt, 'bind_param' ), $params);
本质上,您创建了一个通常传递给 bind_param() 的参数数组,然后使用call_user_func_array()
可能有更好的方法来做到这一点
编辑:刚刚意识到我在写这篇文章时被打败了,我现在把这个答案留在这里,以防万一