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
感谢
答
问题是你想你的时候绑定参数没有为他们添加任何占位符。
你应该永远不要相信用户的输入,所以我建议你不要从输入填充列名。我会修复查询中的列名:
$notifikasi = [1, 2, 'profile'];
$query = $dbcon->prepare("INSERT INTO `notifikasi` (col1, col2, col3) VALUES (?, ?, ?)");
$query->bind_param("iis", $notifikasi);
+0
我创建这个源虚拟文件,没有工作 – faddi
您没有正确绑定参数。查询字符串应该包含像'?'或':foo'这样的占位符,而不是您的实际值。示例请参阅文档'bind_param'。 –
我已阅读文档是应该放?
,所以我把它放在准备状态(?,?,?,?,?)bind_param(iiiis,$值)。
我的问题是数组有什么关系呢?它仍然错误 – faddi