我一直试图解决这个问题。
$insertSql = 'INSERT INTO table (id,date,name,numFarts) VALUES (?,?,?,?)';
$values = (1,'0000-00-00 00:00:00','Bob',5);
$bind_param_str = ('issi');
if ($stmt = $db->prepare ($insertSql)) { // $inserSql is a pre-writted sql insert
$stmt->bind_param($bind_param_str,$values);
$stmt->execute();
$stmt->close();
}
这不起作用,但我无法想到将$values
传递到bind_param()
有什么想法吗?
答案 0 :(得分:0)
对于您需要将数组作为参数传递的任何函数,您可以使用call_user_func_array
。
在这个例子中:
array_unshift($values,$bind_param_str);
call_user_func_array(array($stmt,'bind_param'),$values);
不要问我为什么需要array($stmt,'bind_param')
而不是$stmt->bind_param
。与->
的语法有关。我确定。
答案 1 :(得分:-1)
干净的解决方案(PHP5.6 +):
$stmt->bind_param($bind_param_str, ...$values);