php mysqli绑定参数:没有为预准备语句中的参数提供数据

时间:2013-02-07 02:43:43

标签: php mysqli

好的,这是我动态绑定参数的代码。

$sql = "INSERT INTO `users` (`name`, `password`, `email`, `permission`) VALUES (?, ?, ?, ?)";
$sql_stmt =  $mysqli->prepare ($sql);

$test = array("ssss","1","2","3","4");

call_user_func_array(array($sql_stmt,'bind_param') ,$test);

$sql_stmt->execute();

我得到“没有为预备语句中的参数提供数据”错误。但是,以下行将起作用。

call_user_func_array(array($sql_stmt,'bind_param') ,array("ssss","1","2","3","4"));

我不知道这里发生了什么。

修改 我刚尝试做了

echo $sql_stmt->param_count;

我得到4分。

如果我能够对此有所启发,那将会有很大帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

阅读PHP's page for bind_param中的第二个音符。它说call_user_func_array()需要通过引用传递参数。所以这应该有效:

$arr = array('ssss', '1', '2', '3', '4');
call_user_func_array( array($sql_stmt, 'bind_param'), &$arr );