好吧,这是我动态绑定参数的代码。
$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 );