为什么我不能像这样使用"bind_param“呢?是否有其他方法在循环中使用绑定?
$insert = $this->db->prepare('INSERT INTO '.$tableName.' ('.implode($colum, ', ').') VALUES ('.implode($placeholder, ', ').'); ');
for ($i=0;$i<$count;$i++) {
$insert->bind_param($query[$i]['type'], $query[$i]['value']);
}发布于 2013-08-10 16:39:43
嗯,您的错误非常清楚:您的$placeholder数组不包含与$query数组中的参数相同的占位符数。
检查构建$placeholder和$query数组的代码。如果你找不到问题,把这段代码添加到你的问题中。
好的,对不起,我不习惯mysqli。显然,您必须在一个调用中将所有参数传递给bind_param。这很烦人,但有个解决办法。
call_user_func_array函数允许将参数作为数组传递给函数。
所以你可以:
$params,在后续索引处设置参数的值;call_user_func_array(array($insert, 'bind_param'), $params);。看起来是这样的:
$insert = $this->db->prepare('INSERT INTO '.$tableName.' ('.implode($colum, ', ').') VALUES ('.implode($placeholder, ', ').'); ');
$values = array();
for ($i=0 ; $i<$count ; $i++) {
$types .= $query[$i]['type']; // this needs to be one single character from [idsb]
$values[] = $query[$i]['value'];
}
$params = array_merge(array($types), $values);
call_user_func_array(array($insert, 'bind_param'), $params);https://stackoverflow.com/questions/18163786
复制相似问题