bind_param元素的数量与元素数组的数量不匹配

时间:2017-06-13 18:56:21

标签: php arrays bind bindparam

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

感谢

1 个答案:

答案 0 :(得分:0)

问题是当你没有为它们添加任何占位符时,你试图绑定参数。

您永远不应该信任用户的输入,因此我建议您不要从输入中填充列名。我会修复查询中的列名:

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