有没有办法将数组绑定到mysqli prepare

时间:2008-11-11 12:51:52

标签: php mysql stored-procedures mysqli

我正在尝试创建一个类,它将使用任意数量的变量执行许多存储过程中的任何一个

我正在使用php和mysqli

  • 我的类枚举一个数组,并根据元素的数量构造一个字符串(如果有的话)
  • 提供类似CALL spTestLogin(?,?)的内容,例如
  • 我现在需要使用像这样的东西来绑定我的数组中的输入:

    $ stmt-> bind_param($ this-> paramTypes,$ this-> paramValues); // paramValues是我的数组

然后,如果有效,我可以努力获得我的结果

任何想法

2 个答案:

答案 0 :(得分:3)

你必须做这样的事情:

$params=array_merge(
    array($this->paramTypes), 
    $this->paramValues
);
call_user_func_array(array($stmt, 'bind_param'), $params);

鉴于$this->paramTypesmysqli_stmt::bind_param所需格式的字符串 - 如果不是,则必须先创建此string参数。

我不知道outinout参数在这种情况下是否有效。

答案 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()

进行调用

可能有更好的方法来做到这一点

编辑:刚刚意识到我在写这篇文章时遭到了殴打,我现在暂时留下这个答案以备感兴趣