bind_param数不匹配元件阵列的数量

问题描述:

你好,我有一个关于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

问题是你想你的时候绑定参数没有为他们添加任何占位符。

你应该永远不要相信用户的输入,所以我建议你不要从输入填充列名。我会修复查询中的列名:

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

我创建这个源虚拟文件,没有工作 – faddi