- Este tópico contém 8 respostas, 4 vozes e foi atualizado pela última vez 1 ano, 2 meses atrás por
Tutora Vera.
-
AutorPosts
-
-
28 de janeiro de 2022 às 21:52 #85192
flavia c s melo melo
Participanteolá,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
-
28 de janeiro de 2022 às 22:27 #85193
flavia c s melo melo
Participantea 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
-
31 de janeiro de 2022 às 10:43 #85282
Tutora Vera
MestreFlavia, 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 3 anos, 2 meses atrás por
Tutora Vera.
-
Esta resposta foi modificada 3 anos, 2 meses atrás por
-
-
10 de abril de 2022 às 13:39 #90886
Pedro Henrique Reis Teixeira
ParticipanteOlá 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!"); }
-
11 de abril de 2022 às 09:28 #90994
Tutora Vera
MestrePedro, ao criar um Try/catch você conseguiu resolver o erro?
-
-
22 de janeiro de 2024 às 14:27 #130807
Milton Júnior
ParticipanteBoa 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é?!
-
23 de janeiro de 2024 às 09:09 #130840
Tutora Vera
MestreMilton, Você pode testar criando um Try/catch também não tem problema, a finalidade é que resolva o erro.
-
-
23 de janeiro de 2024 às 22:46 #130894
Milton Júnior
ParticipantePelo 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” 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> -
25 de janeiro de 2024 às 11:46 #130935
Tutora Vera
MestreMilton, 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.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.