2017-06-16 154 views
0

我的代码:未捕获的异常 'PDOException' 与消息 'SQLSTATE [HY093]

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>"; 

    } 
} 

致命错误:致命错误:未捕获的异常 'PDOException' 与消息' SQLSTATE [HY093]:无效参数号:号码的绑定变量不匹配C:\ AppServ \ www \ class \ Cadastro.class.php中的令牌数量:85堆栈跟踪:#0 C:\ AppServ \ www \ class \ Cadastro.class.php(85):PDOStatement - > execute()#1 C:\ AppServ \ www \ cadastrar \ index.php(7):Cadastro-> registro('SkelletonX','SkelletonX','SkelletonX','SkelletonX @ gmai ...','在线85上的C:\ AppServ \ www \ class \ Cadastro.class.php中抛出#2 {main}

+0

请勿在查询中使用引号''''。这使他们文字,而不是占位符。 – Barmar

回答

0

您需要将您的查询替换为

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

解释你改变了什么,为什么。 – Barmar

+0

@Barmar删除了引号,否则不起作用? – Ian

+2

对。这个解释应该在答案中。 – Barmar

相关问题