erro php

Home Fóruns PHP/MYSQL erro php

Visualizando 5 respostas da discussão
  • Autor
    Posts
    • #85192
      flavia c s melo melo
      Participante

      olá,terminei a aula 12 do curso de PHP com mysql,e nessa aula o guanabara ensina a verificar se ja tem um usuario igual o outro,porque não pode ter dois usuarios com os mesmos users pois o usuario é a primary key,e o jeito que ele faz isso é assim:

      $senha = gerarHash($senha1);
      $q = “INSERT INTO usuarios (usuario,nome,senha,tipo)VALUES(‘$usuario’,’$nome’,’$senha’,’$tipo’)”;

      if($banco->query($q)){
      echo msg_succeso(“Usuário $nome cadastrado com sucesso!”);

      }else{
      echo msg_erro(“Não foi possivel cadastrar o usuario,talvez o login ou nome ja esteje sendo usado”);
      }

      só que quando eu coloco o mesmo user na teoria era para aparecer a mensagem de erro que eu coloquei no codigo,mas aparece o erro do proprio PHP,queria saber se tem como contornar isso

    • #85193
      flavia c s melo melo
      Participante

      a esqueci,o erro que retorna:

      Fatal error: Uncaught mysqli_sql_exception: Duplicate entry ‘d’ for key ‘PRIMARY’ in C:\xampp\htdocs\Curso PHP com MYSQL\user-new.php:63 Stack trace: #0 C:\xampp\htdocs\Curso PHP com MYSQL\user-new.php(63): mysqli->query(‘INSERT INTO usu…’) #1 {main} thrown in C:\xampp\htdocs\Curso PHP com MYSQL\user-new.php on line 63

      • #85282
        Tutora Vera
        Mestre

        Flavia, da uma analisada na aula novamente e compara a linha 63 com atenção a qual indica erro, pode ser um erro de sintax, se for preciso refaz para veja se o erro continua. Aguardo seu retorno.

        • Esta resposta foi modificada 2 anos, 9 meses atrás por Tutora Vera.
    • #90886

      Olá Flávia, tive o mesmo problema e não consegui solucionar, então eu criei um Try/catch (que é praticamente um else if para tratar erros.
      Ficou assim:

      
      $senha = gerarHash($senha1);
      $q = "INSERT INTO usuarios (usuario,nome,senha,tipo) VALUES ('$usuario','$nome','$senha','$tipo')";
      try{
          if($banco->query($q)){
              echo msg_sucesso("Usuário $usuario cadastrado com sucesso!");
           }
      }catch (Exception $ex){
          echo msg_erro("Erro ao cadastrar usuário!");
      }
      
      • #90994
        Tutora Vera
        Mestre

        Pedro, ao criar um Try/catch você conseguiu resolver o erro?

    • #130807
      Milton Júnior
      Participante

      Boa tarde!
      Também estou com o mesmo problema.

      Vcs conseguiram solucionar? Eu não tentei pelo try/catch pois na teoria o sistema exigiria mais um processamento em nosso código, talvez não seja interessante, né?!

      • #130840
        Tutora Vera
        Mestre

        Milton, Você pode testar criando um Try/catch também não tem problema, a finalidade é que resolva o erro.

    • #130894
      Milton Júnior
      Participante

      Pelo try/catch dá certo! Mas gostaria de entender o porquê de não ter dado certo a impressão e ter retornado um fatal erro do php…

      <!DOCTYPE html>
      <html lang=’pt-br’>
      <head>
      <title>Cadastro de Novo Usuário</title>
      <meta charset=’UTF-8′ />
      <link rel= ‘stylesheet’ href= ‘estilos/estilo.css’ />
      <link href=”https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined&#8221; rel=”stylesheet” />
      </head>
      <body>
      <?php
      require_once “includes/banco.php”;
      require_once “includes/login.php”;
      require_once “includes/funcoes.php”;
      ?>
      </div class=”corpo”>
      <div class=”user–new”>
      <?php
      if(!is_admin()){
      echo msg_erro(‘Área restrita – nível de acesso não autorizado!’);
      }else{
      if (!isset($_POST[‘usuario’])){
      require “user-new-form.php”;
      }else {
      if(!isset($POST[‘usuario’])){
      #campos obrigatórios:
      $usuario = $_POST[‘usuario’] ?? null;
      $nome = $_POST[‘nome’] ?? null;
      $senha1 = $_POST[‘senha1’] ?? null;
      $senha2 = $_POST[‘senha2’] ?? null;
      $tipo = $_POST[‘tipo’] ?? null;

      if($senha1 === $senha2){
      if (empty($usuario) || empty($nome) || empty($senha1) || empty($senha2) || empty($tipo) ){
      echo msg_erro(“Todos os campos são obrigatórios – repita o procedimento”);
      }else{
      $senhafinal = gerarHash($senha1);
      $q = “INSERT INTO usuarios (usuario, nome, senha, tipo) VALUES (‘$usuario’, ‘$nome’, ‘$senhafinal’, ‘$tipo’)”;
      #executar essa query
      try{
      if($banco->query($q)){
      echo msg_sucesso(“Usuário $nome cadastrado com sucesso!”);
      }
      }catch (Exception $ex){
      echo msg_erro(“Erro ao cadastrar usuário”);
      }
      }
      }else{
      echo msg_erro(“Senhas não conferem – Repita o procedimento!”);
      }
      }
      }
      }
      ?>
      </div>
      </div>
      <div><?php echo voltar();?></div>
      </body>
      </html>

    • #130935
      Tutora Vera
      Mestre

      Milton, esse erro pode ocorrer por vários motivos, uma delas por erro de sintax ou até mesmo quando você tenta chamar um método obtendo um ponteiro nulo (mais ou menos) que é fatal. Por vezes devemos apenas corrigir o código para garantir que ele esteja sempre definido quando precisar ou tenha uma maneira menos frágil de garantir que uma conexão de banco de dados esteja disponível no código que o utiliza.

      Podemos tentar “capturar” erros fatais, usando set_error_handler, mas isso ainda interrompe a execução do script em erros fatais.

Visualizando 5 respostas da discussão
  • Você deve fazer login para responder a este tópico.