2017-06-13 62 views
0

你好,我有一個關於bind_param問題每個代碼的作品,但不是這一個...也許愚蠢的問題..bind_param數不匹配元件陣列的數量

$key = "`".implode("`, `",array_keys($notifikasi))."`"; 
echo $value = "'".implode("', '",array_values($notifikasi))."'"; 
$query = $dbcon->prepare("INSERT INTO `notifikasi` ($key) VALUES ($value)"); 
$query->bind_param("iiiis",$value); 
$query->execute(); 

我回顯值:

'1','1','2','3','profile.php?confirm=33' 

我已經穿上bind_param任意數量仍然得到這個錯誤:

mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables 

任何人都可以回答MY M isunderstanding?

[編輯] 沒關係,我已經找到了解決辦法:
使用call_user_func_array()

mysqli bind_param for array of strings

感謝

+0

您沒有正確綁定參數。查詢字符串應該包含像'?'或':foo'這樣的佔位符,而不是您的實際值。示例請參閱文檔'bind_param'。 –

+0

我已閱讀文檔是應該放?
,所以我把它放在準備狀態(?,?,?,?,?)bind_param(iiiis,$值)。
我的問題是數組有什麼關係呢?它仍然錯誤 – faddi

回答

0

問題是你想你的時候綁定參數沒有爲他們添加任何佔位符。

你應該永遠不要相信用戶的輸入,所以我建議你不要從輸入填充列名。我會修復查詢中的列名:

$notifikasi = [1, 2, 'profile']; 
$query = $dbcon->prepare("INSERT INTO `notifikasi` (col1, col2, col3) VALUES (?, ?, ?)"); 
$query->bind_param("iis", $notifikasi); 
+0

我創建這個源虛擬文件,沒有工作 – faddi

相關問題