我正在尝试创建一个类,它将使用任意数量的变量执行许多存储过程中的任何一个
我正在使用php和mysqli
CALL spTestLogin(?,?)
的内容,例如我现在需要使用像这样的东西来绑定我的数组中的输入:
$ stmt-> bind_param($ this-> paramTypes,$ this-> paramValues); // paramValues是我的数组
然后,如果有效,我可以努力获得我的结果
任何想法
答案 0 :(得分:3)
你必须做这样的事情:
$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
参数在这种情况下是否有效。
答案 1 :(得分:2)
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()
可能有更好的方法来做到这一点
编辑:刚刚意识到我在写这篇文章时遭到了殴打,我现在暂时留下这个答案以备感兴趣