1

我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个

我使用 php 和 mysqli

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

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

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

有任何想法吗

4

2 回答 2

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参数。

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

于 2008-11-11T13:10:30.453 回答
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()

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

编辑:刚刚意识到我在写这篇文章时被打败了,我现在把这个答案留在这里,以防万一

于 2008-11-11T13:22:42.863 回答