- Este tópico contém 8 respostas, 4 vozes e foi atualizado pela última vez 10 meses atrás por Tutora Vera.
-
AutorPosts
-
-
28 de janeiro de 2022 às 21:52 #85192flavia c s melo meloParticipante
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
-
28 de janeiro de 2022 às 22:27 #85193flavia c s melo meloParticipante
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
-
31 de janeiro de 2022 às 10:43 #85282Tutora VeraMestre
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.
-
-
10 de abril de 2022 às 13:39 #90886Pedro Henrique Reis TeixeiraParticipante
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!"); }
-
11 de abril de 2022 às 09:28 #90994Tutora VeraMestre
Pedro, ao criar um Try/catch você conseguiu resolver o erro?
-
-
22 de janeiro de 2024 às 14:27 #130807Milton JúniorParticipante
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é?!
-
23 de janeiro de 2024 às 09:09 #130840Tutora VeraMestre
Milton, 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 #130894Milton JúniorParticipante
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” 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 #130935Tutora VeraMestre
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.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.