php-mysqli绑定参数:没有为prepared语句中的参数提供数据


php mysqli binding parameter:No data supplied for parameters in prepared statement

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

$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的正确计数。

如果我能在这方面有所启发,那将是非常有帮助的。

谢谢。

阅读PHP页面中bind_param的第二条注释。它说call_user_func_array()需要通过引用传递参数。所以这应该有效:

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