Php 未捕获异常';PDO异常';带有消息';SQLSTATE[HY093]

Php 未捕获异常';PDO异常';带有消息';SQLSTATE[HY093],php,Php,我的代码: public function registro($login, $senha, $confsenha, $email, $nick){ $pw = strtoupper(md5($senha)); $pw2 = strtoupper(md5($confsenha)); if (!self::check_login($login)){ if(!self::check_email($email)){ //ok

我的代码:

    public function registro($login, $senha, $confsenha, $email, $nick){
    $pw = strtoupper(md5($senha));
    $pw2 = strtoupper(md5($confsenha));
    if (!self::check_login($login)){

        if(!self::check_email($email)){ //ok

            if($pw == $pw2){

                $conexao = new Config;
                $conect = $conexao->getConn();
                $rg = $conect->prepare("INSERT INTO account (login, Passwd, Email, Nick, Gamepoint)VALUES ('?', '?', '?', '?', ?);");
                $rg->bindValue(1, $login);
                $rg->bindValue(2, $pw);
                $rg->bindValue(3, $email);
                $rg->bindValue(4, $nick);
                $rg->bindValue(5, 5000); //valor gamepoint
                $rg->execute();


            }else{

            return "<div class='n_error'><p>Confirmação de senha incorreta.</p></div>";
            }
        }else{
            return "<div class='n_error'><p>Email em uso.</p></div>";
        }
    }else{
        return "<div class='n_error'><p>Login em uso.</p></div>";

    }
}
公共功能注册表($login,$senha,$confsenha,$email,$nick){
$pw=strtoupper(md5($senha));
$pw2=strtoupper(md5($confsenha));
如果(!self::check_login($login)){
如果(!self::check_email($email)){//ok
如果($pw==$pw2){
$conexao=新配置;
$conect=$conexao->getConn();
$rg=$conect->prepare(“插入帐户(登录名、密码、电子邮件、尼克、游戏点)值(“?”、“?”、“?”、“?”、“?);”;
$rg->bindValue(1,$login);
$rg->bindValue(2$pw);
$rg->bindValue(3$email);
$rg->bindValue(4$nick);
$rg->bindValue(55000);//英勇游戏点
$rg->execute();
}否则{
返回“Confirmaçade senha incorreta.

”; } }否则{ 返回“电子邮件给em uso.

”; } }否则{ 返回“登录em uso.

”; } }

致命错误:致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY093]:参数编号无效:绑定变量的数量与C:\AppServ\www\class\Cadastro.class.php中的令牌数量不匹配。php:85堆栈跟踪:#0 C:\AppServ\www\class\Cadastro.class.php(85):PDOStatement->execute()#1 C:\AppServ\www\cadastrar\index.php(7):Cadastro->registro('skeletonx','skeletonx','skeletonx','skeletonx','SkelletonX@gmai...“,”SkelletonX“#2{main}在C:\AppServ\www\class\Cadastro.class.php的第85行抛出,您需要将查询替换为

$rg = $conect->prepare("INSERT INTO account (login, Passwd, Email, Nick, Gamepoint)VALUES (?,?, ?, ?, ?);");

不要在查询中的
周围加引号。这使它们成为文字,而不是占位符。请解释您更改的内容和原因。@Barmar删除了引号,否则它将不起作用?对。答案中应该有这样的解释。