你好,我有一个关于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
任何人都可以回答我的误解吗?
[修改]
没关系,我找到了解决方案:
使用call_user_func_array()
mysqli bind_param for array of strings
感谢
答案 0 :(得分:0)
问题是当你没有为它们添加任何占位符时,你试图绑定参数。
您永远不应该信任用户的输入,因此我建议您不要从输入中填充列名。我会修复查询中的列名:
$notifikasi = [1, 2, 'profile'];
$query = $dbcon->prepare("INSERT INTO `notifikasi` (col1, col2, col3) VALUES (?, ?, ?)");
$query->bind_param("iis", $notifikasi);