$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分。
如果我能够对此有所启发,那将会有很大帮助。
谢谢。
答案 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 );