PHP:如何将数组传递给bind_param

时间:2016-06-25 00:46:15

标签: php mysql mysqli

我一直试图解决这个问题。

$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()

的任何其他方式

有什么想法吗?

2 个答案:

答案 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);