2011-04-06 42 views
8

我試圖傳遞一個字符串到我的MySQLi準備好的語句傳遞參數,但它給我的錯誤:無法通過引用的MySQLi

無法通過引用的MySQLi

傳遞參數

下面是相關的代碼:

$kv = json_encode(array($key => $value)); 
$stmt->prepare("insert into rules (application_id, ruletype, rule_name, rule_info) values (?, ?, ?, ?);"); 
$stmt->bind_param('iiss', $application_id, 1, $config_name, $kv); 
+7

爲什麼不直接將「1」直接嵌入到查詢中?如果它是一個靜態值,那麼將它作爲一個綁定參數沒有意義。否則,只需執行'$ one = 1;',然後將'$ one'傳入綁定調用。你不能引用常量。 – 2011-04-06 16:40:24

回答

20

'iiss'和'1'不能作爲參考傳遞,因爲它們不是變量而是字符串常量。您需要使用提到的值創建兩個變量並傳遞它們,因爲bind_param()函數需要引用傳遞的變量。

編輯:它是'1'導致的問題,而不是被綁定參數('iiss')的名稱。對於錯誤信息抱歉,當我回答你的問題時,我很匆忙。

+0

請注意,第一個字符串不是參數,它們是** Type規範字符**,請參閱http://php.net/manual/en/mysqli-stmt.bind-param.php – jeroen 2011-04-06 16:50:36

+0

是的,您是對,我的壞 - 我瀏覽了這個問題,並注意到OP沒有將參數作爲變量傳遞。我會用你的輸入來編輯答案。 – 2011-04-06 16:54:54

0

檢查$config_name的說法。 '1'不能作爲參考傳遞