1

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

$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。

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

谢谢你。

4

1 回答 1

1

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

$arr = array('ssss', '1', '2', '3', '4');
call_user_func_array( array($sql_stmt, 'bind_param'), &$arr );
于 2013-02-07T03:22:15.907 回答