2013-07-24 86 views
0

我想一些變量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;),但它說,這是一個意外的字符(我預期這個錯誤,因爲我沒有的我在做什麼想法)
在此先感謝

+0

你爲什麼要這麼做? –

+0

我有一個搜索表單,這是跳入腦中進行研究的唯一方式,我很新 – Razorphyn

+0

我不認爲你需要在這裏通過引用。這是否按照已寫入的方式工作? –

回答

相關問題