【发布时间】:2014-09-16 18:26:31
【问题描述】:
我正在寻找一个简单的函数来执行准备好的语句。现在我遇到了一个问题:
class mysqli_extend extends \mysqli{
function pquery(){
$input = func_get_args();
if ($stmt = parent::prepare($input[0])){
$input = array_slice($input,1);
$index = count($input);
if ($index){ //non-0 == true, 0 == false
$typestr = '';
while ($ele = current($input)){
$type = gettype($ele);
switch($type) {
case "integer": $typestr .= 'i'; break;
case "double": $typestr .= 'd'; break;
case "string": $typestr .= 's'; break;
default: $typestr .= 'b'; break;
}
next($input);
}
array_unshift($input,$typestr);
//output to console checking array content
while ($ele = current($input)){
echo key($input) . ":" . $ele . "\t";
next($input);
}
call_user_func_array(array($stmt,'bind_Param'),$input);
}
$stmt->execute();
}
return true;
}
}
这是要执行的命令:
$test = $mysqli_extend->pquery('UPDATE user_list SET upriv = ? WHERE uname =?','moderator','admin');
while echo 语句为我提供了正确的数组内容“0:ss 1:moderator 2:admin” 我预期会收到错误: “警告:mysqli_stmt::bind_param() 的参数 2 应为参考”
因为是最新的php版本,所以有问题 "致命错误:调用时传递引用已被删除"
请问有没有办法解决这个问题?
【问题讨论】:
-
你看过这个answer?
-
我实际上预计应该有一个解决方法来解决“预期成为参考”的错误躲避 &$ 符号......而且我不确定我在哪里弄错了:'(
-
你能发布用于准备语句的代码吗?
-
和最后一行代码完全一样...编辑澄清
-
mysqli_stmt_bind_param 的示例解释了如何提供对 call_user_func_array() 的正确引用。
标签: php mysqli prepared-statement pass-by-reference