1

我创建了一个类,该类mysqli使用私有函数保存对象链接,以生成函数所需的bind_params参数,然后该函数将使用该参数:

call_user_func_array(array($stmt, 'bind_param'), $params);

因为,bind_param需要通过引用传递值,所以我创建了一个这样的函数:

// $values is taken from $_POST's values
private function &params($values) {

    // Generate first value for bind_params like: 'ssis'
    $param_type = '';
    foreach ($values as $value) {
        $param_type .= gettype($value)[0];
    }

    // Generate the rest value for bind_params
    $params[] = & $param_type;
    for ($i = 0; $i < count($values); $i++) {
        $params[] = & $values[$i];
    }

    // The returned values should be like { 'ssi', $str_value, $str_value, $int_value }
    return $params;
}

我如何执行准备好的语句是这样的:

function insert_prepared($query, $posted) {
    $params = &$this->params(array_values($posted));
    $stmt = $this->mysqli->prepare($query);
    if ($stmt) {
        call_user_func_array(array($stmt, 'bind_param'), $params);
        if ($stmt->execute()) {
            return true;
        } else {
            return false;
        }
    }
}

好的,现在的问题是为什么call_user_func_array(array($stmt, 'bind_param'), $params)仍然抱怨期望成为参考

手册上说函数应该写成这样吗function &params($values)

我错过了什么?

4

0 回答 0