有没有办法将数组绑定到mysqli准备[重复]
Posted
技术标签:
【中文标题】有没有办法将数组绑定到mysqli准备[重复]【英文标题】:Is there a way to bind an array to mysqli prepare [duplicate] 【发布时间】:2010-09-21 19:14:38 【问题描述】:我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个
我的类枚举一个数组并根据元素的数量构造一个字符串(如果有) 例如给CALL spTestLogin(?,?)
这样的东西
我现在需要使用类似这样的方法绑定数组中的输入:
$stmt->bind_param($this->paramTypes,$this->paramValues);//paramValues 是我的数组
如果可行,我可以努力获得我的结果
任何想法
【问题讨论】:
【参考方案1】:你必须这样做:
$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
参数在这种情况下是否有效。
【讨论】:
【参考方案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()
进行调用
可能有更好的方法来做到这一点
编辑:刚刚意识到我在写这篇文章时被打败了,我现在把这个答案留在这里以防万一
【讨论】:
以上是关于有没有办法将数组绑定到mysqli准备[重复]的主要内容,如果未能解决你的问题,请参考以下文章