【发布时间】:2016-08-30 04:27:24
【问题描述】:
我正在尝试重写一些代码以消除call_user_func_array 调用,并且到目前为止有以下代码:
if($stmt = $this->_db->prepare($sql)) {
$bind_arguments = $this->params;
// remove first element (eg. 'ssiss')
$bind_arguments = array_shift($bind_arguments);
// execute query passing values
$res = $stmt->execute($bind_arguments);
}
这是var_export 中的$this->params:
array ( 0 => 's', 1 => 'admin', )
$res 在尝试上述方法时总是评估为null。根据this comment,看来一切都是正确的,除了我的数组有整数键,并且在最后一个元素之后还有一个额外的,。
我需要做什么来格式化这个数组(删除第一个元素),传递给$stmt->execute方法作为包含数组元素的变量(这不是一个静态数组。其中的元素被其他修改类中添加或删除元素的方法)。
【问题讨论】:
-
这在 mysqli 中是出了名的困难,但在 PDO 中却微不足道。考虑切换
-
mysqli::execute(oo 接口)在php.net/manual/en/mysqli-stmt.execute.php中不需要数组
-
仅供参考,comment you linked to 是在谈论 PDO,而不是 MySQLi
-
$bind_arguments = array_shift($bind_arguments);将移位参数分配给$bind_arguments... 您没有传递数组。你传递了它的第一个元素。 -
@SamuelJackson 返回移位值,如果数组为空或不是数组,则返回NULL。 php.net/manual/en/function.array-shift.php
标签: php arrays mysqli prepared-statement