【问题标题】:Is there a way to bind an array to mysqli prepare [duplicate]有没有办法将数组绑定到mysqli准备[重复]
【发布时间】:2010-09-21 19:14:38
【问题描述】:
我正在尝试创建一个类,该类将执行具有任意数量变量的多个存储过程中的任何一个
我正在使用 php 和 mysqli
如果可行,我可以努力获得我的结果
任何想法
【问题讨论】:
标签:
php
mysql
stored-procedures
mysqli
【解决方案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() 进行调用
可能有更好的方法来做到这一点
编辑:刚刚意识到我在写这篇文章时被打败了,我现在把这个答案留在这里以防万一