2011-10-27 44 views
0

我試圖此代碼,但我得到這個錯誤:只有變量可以通過引用傳遞 - PHP

Only variables can be passed by reference in xxx 

腳本

class page { 
    function insert($db, $of, $form, &$arr) { 

     $i = 0; 

     foreach(array_combine($form['value0'], $arr) as $val=>$v){ 

      $sql->prepare("mysqli query here"); 
      $sql->bind_param('ssss', $val, $of, $v[$i][0], $v[$i][1]);//error here 
      $sql->execute(); 
      $i++; 

     } 
     return true; 
    } 
} 

的原因是什麼,以及如何解決?謝謝

+2

我甚至不看到'sql'初始化 –

+0

在你的錯誤路線,應該$的是$ oferta? – wclark

+0

你爲什麼認爲這可以解決它? – icktoofay

回答

5

我假設你使用的是mysqli::bind_param。除第一個以外的所有參數都通過引用傳遞。這意味着它們必須是變量,而不是字符串,數組元素等。其實我不確定爲什麼它需要通過引用來做到這一點,但沒關係。你可以很容易地解決這個問題:

$v0 = $v[$i][0]; 
$v1 = $v[$i][1]; 
$sql->bind_param('ssss', $val, $of, $v0, $v1); 
+0

「愚蠢的設計決定」,但它是這樣的:我想「這樣的價值可以分配後綁定,但在執行之前?」這將允許通過只改變引用變量的值來重複使用相同的'$ sql' ...再次,而不是我將如何設計它。 – 2011-10-27 03:02:55