我创建了一个类,该类mysqli
使用私有函数保存对象链接,以生成函数所需的bind_params
参数,然后该函数将使用该参数:
call_user_func_array(array($stmt, 'bind_param'), $params);
因为,bind_param
需要通过引用传递值,所以我创建了一个这样的函数:
// $values is taken from $_POST's values
private function ¶ms($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 ¶ms($values)
?
我错过了什么?