PHP / MySQLi - 数组作为 bind_param

Posted

技术标签:

【中文标题】PHP / MySQLi - 数组作为 bind_param【英文标题】:PHP / MySQLi - array as bind_param 【发布时间】:2015-09-01 00:31:53 【问题描述】:

我很好奇是否有办法一次绑定参数数组

简单来说,是这样的:

$sql = "SELECT * FROM table WHERE id IN (?)";
$stmt = $db->prepare($sql);
$stmt->bind_param("<array>", $array_of_ids);
$stmt->execute();

想法?

【问题讨论】:

不确定。待定。 遗憾的是,不,可能重复:php/mysql using an array in WHERE clause 【参考方案1】:

我认为你不能这样做,但如果你设置一个参数和值数组,你可以使用类似的 foreach 循环

$params=array(
    ':id'=>1,
    ':cat'=>'bananas'
    ':type'=>100
);
foreach( $params as $param=>$value )$stmt->bind_param( $param,$value );

【讨论】:

【参考方案2】:

从 PHP 5.6 开始,这可以通过 ... 运算符实现(另请参见 documentation)。该运算符在调用函数时解包列表,导致列表像多个变量一样。

您可以使用以下内容:

$stmt->bind_param($types, ...$data);

这假定$types 是一个包含数据类型的字符串,$data 是一个包含查询数据的列表。

【讨论】:

以上是关于PHP / MySQLi - 数组作为 bind_param的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有数组作为第二个参数的 mysqli::bind_param

MySQLi Bind Param 与 IN 的数组 [重复]

PHP MySQLi 获取“数组推送”覆盖数据

php Mysqli 未定义函数

PHP 致命错误:未捕获的错误:无法使用 mysqli 类型的对象作为数组

PHP点滴记录