有没有办法将数组绑定到mysqli准备[重复]

Posted

技术标签:

【中文标题】有没有办法将数组绑定到mysqli准备[重复]【英文标题】:Is there a way to bind an array to mysqli prepare [duplicate] 【发布时间】:2010-09-21 19:14:38 【问题描述】:

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

我正在使用 phpmysqli

我的类枚举一个数组并根据元素的数量构造一个字符串(如果有) 例如给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->paramTypesmysqli_stmt::bind_param 所需格式的字符串 - 如果不是,您必须先创建此string 参数。

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

【讨论】:

【参考方案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准备[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用索引号将数据发送到mysqli(准备好的语句)

bind_result 成数组 PHP mysqli 准备好的语句

带有变量的Mysqli准备好的语句列[重复]

mySqli 使用通配符绑定参数 LIKE

没有绑定参数的mysqli准备好的语句仍然安全吗?

MySQLi准备好的语句不绑定整数