mysqli_stmt :: bind_param()的参数2应该是一个引用,给定的值

时间:2016-02-15 16:53:10

标签: mysqli prepared-statement

$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"
}

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

  

参数2到mysqli_stmt :: bind_param()应该是一个参考,   价值在...中给出。

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

1 个答案:

答案 0 :(得分:2)

问题解决了。

解决问题:

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