【问题标题】:Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value givenmysqli_stmt::bind_param() 的参数 2 应为参考,给定值
【发布时间】:2020-05-29 06:34:35
【问题描述】:
$type = array('i','i');
$param = array("1","1");
$stmt = $mysqli->prepare("SELECT par1, par2 FROM table WHERE par3 = ? AND par4 = ?");
$refs = array();
foreach($param as $key => $value) {
        $refs[$key] = &$param[$key];
}
$result_params = array_merge($type,$refs);
call_user_func_array(array($stmt, 'bind_param'), $result_params);
$stmt->execute();

var_dump($result_params):

array(4) {
  [0]=>
  string(1) "i"
  [1]=>
  string(1) "i"
  [2]=>
  &string(1) "1"
  [3]=>
  &string(1) "1"
}

当我们使用代码时,我们会得到错误:

mysqli_stmt::bind_param() 的参数 2 应为参考, 在...中给出的值

为什么我们会收到此错误以及如何解决此问题?

【问题讨论】:

标签: php mysqli prepared-statement


【解决方案1】:

问题已解决。

解决问题:

而不是$type = array('i','i'); 需要使用$type = array('ii');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2018-12-10
    • 2013-01-14
    相关资源
    最近更新 更多