我想一些變量dinamically傳遞給mysqli_stmt::bind_param()
,但我被困(可能是存在的,即使call_user_func_array
問題):通Variable作爲參考mysqli_stmt :: bind_param()
[..]
else if($_SESSION['status']==2){
$merge=array('type'=>array(),'val'=>array());
$tail=array();
if($id!=''){
$tail[]='`user_id`=?';
$merge['type'][]='i';
$merge['val'][]=$id;
}
if($enid!=''){
$tail[]='`ref_id`=?';
$merge['type'][]='s';
$merge['val'][]=$enid;
}
if($tit!=''){
$tail[]='`title`=?';
$merge['type'][]='s';
$merge['val'][]=$tit;
}
if($dep!=''){
$tail[]='`department_id`=?';
$merge['type'][]='i';
$merge['val'][]=$dep;
}
if($opid!=''){
$tail[]='`operator_id`=?';
$merge['type'][]='i';
$merge['val'][]=$opid;
}
if($op!=''){
$tail[]='`operator_id` IN (SELECT `id` FROM '.$SupportUserTable.' WHERE `name`=? AND 0!=`status`)';
$merge['type'][]='s';
$merge['val'][]=$op;
}
if($from!=''){
$tail[]='`created_time` <= ?';
$merge['type'][]='s';
$merge['val'][]=$from;
}
if($to!=''){
$tail[]='`created_time` >= ?';
$merge['type'][]='s';
$merge['val'][]=$to;
}
if($usmail!=''){
$tail[]='(user_id=(SELECT `id` FROM '.$SupportUserTable.' WHERE `mail`=? LIMIT 1) OR operator_id=(SELECT `id` FROM '.$SupportUserTable.' WHERE `mail`=? LIMIT 1))';
$merge['type'][]='ss';
$merge['val'][]=$usmail.','.$usmail;
}
$query.=implode(' AND ',$tail);
}
$prepared = $stmt->prepare($query);
if($prepared){
if(call_user_func_array(array($stmt, "bind_param"), array(implode('',$merge['type']), $merge['val']))){
[...]
這是錯誤:
PHP Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in C:\xampp\htdocs\php\function.php on line 2165
在這段代碼之前,所有的變量都已經變質並且正確。 我曾嘗試變量之前添加&
(例如:$merge['val'][]=&$id;
),但它說,這是一個意外的字符(我預期這個錯誤,因爲我沒有的我在做什麼想法)
在此先感謝
你爲什麼要這麼做? –
我有一個搜索表單,這是跳入腦中進行研究的唯一方式,我很新 – Razorphyn
我不認爲你需要在這裏通過引用。這是否按照已寫入的方式工作? –