Ir ao conteúdo
  • Cadastre-se

Erro no insert do banco de dados


Posts recomendados

Galera, boa tarde, gostaria da ajuda de vocês.

Alguém sabe porque estou recebendo a mensagem "ERRO AO CADASTRAR"? Acho que é na função create mas não estou achando

 

segue o print.

segue o codigo:

<?php
const HOST = 'localhost';
const USER = 'root';
const PASS = '';
const DBSA = 'log_sys';
@$link = mysqli_connect(HOST,USER,PASS,DBSA);
if($link): echo 'Conectado com sucesso';
else: echo 'Erro ao conectar'.mysqli_conncet.error;
endif;

echo '<hr />';

//CREATE
$nome = 'Wanderson';
$email = '[email protected]';
$senha = 'wanwan123';
$tabela = 'usuario';
$queryCreate = "INSERT INTO {$tabela} (nm_usuario,email_usuario,senha_usuario) VALUES ('$nome','$email,'$senha')";
$create = mysqli_query($link,$queryCreate);
if($create): echo 'Cadastro com sucesso';
else: echo'Erro ao cadastrar';
endif;
echo'<hr />';

//UPDATE
$novoNome = $nome. 'Prudencio';
$tabela = 'usuario';
$queryUpdate = "UPDATE {$tabela} SET nm_usuario = 'novoNome' WHERE nm_usuario = '$nome'";
$update = mysqli_query($link,$queryUpdate);
if($update): echo mysqli_affected_rows($link).' registros atualizados com sucesso';
else: echo'Erro ao atualizar';
endif;
echo'<hr />';

//DELETE

$queryDelete = "DELETE FROM {$tabela} WHERE id_usuario = 3";
$delete = mysqli_query($link,$queryDelete);
if($delete): echo mysqli_affected_rows($link).' registros removidos com sucesso:';
else: echo 'Erro ao deletar: '.mysqli_error($link);
endif;

echo'<hr />';

//READ
$queryRead = "SELECT *FROM usuario";
$read = mysqli_query ($link,$queryRead);
if($read): foreach ($read as $res): extract($res);
echo $id_usuario." - ".$nm_usuario." - ".$email_usuario .'<br />';
endforeach;
else: echo 'Erro ao ler: '.mysqli_error($link);
endif;
?>

 

db.png

erro.png

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Raphael Weber 

Olá, creio que o erro no seu código é porque está faltando uma aspas simples no value de sua SQL.

 VALUES ('$nome','$email,'$senha')";

 

Troca para

 VALUES ('$nome','$email','$senha')";

 

Contudo recomendo fazer de forma mais simples sem enfeitar muito.

Sugiro você alterar também algumas coisas como:

Não usar o CONST e o "@"  na frente da variável. 

Separa a conexão do arquivo...  

crie um conexao.php 

<?php
     $link = mysqli_connect("localhost","root","","log_sys");
//CREATE
$nome = 'Wanderson';
$email = '[email protected]';
$senha = 'wanwan123';
$tabela = 'usuario';

include 'conexao.php';


$QueryCreate = mysqli_query($link, "INSERT INTO usuario(nm_usuario, email_usuario, senha_usuario) VALUES ("$nome","$email","$senha")");
if($QueryCreate): echo 'Cadastro com sucesso';
else: echo'Erro ao cadastrar';
endif;
echo'<hr />';

 

Link para o comentário
Compartilhar em outros sites

Dif, agora funcionou, obrigado realmente estranho, pra mim tinha colocado aspas simples ( ' ' ) ao olhar sua resposta não vi diferença, só que a variavel $senha ficou verde kkkkkkkkkkkkkkkkkkkkkkkk, mas enfim obrigado.

 

 

Aproveito para tirar outra duvida:

Como posso passar esse crud para um formulário?

 

alem de linkar os names do formulario depois disso terei que fazer um sistema de login e senha, não sei o que fazer com esse crud agora... como poderia adapta-lo para um formulario html?

 

Obrigado. 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Raphael Weber

Então, o crud pode ser adaptador facilmente.

Veja que nele você usou variáveis estáticas. 

No caso, você substitui o valor das variáveis pelo valor do formulário $_POST["campo"].

 

SE você quiser aproveitar o mesmo arquivo php para mais de uma ação, você precisa  informar o tipo da ação, isso pode ser feito de "N" formas:

Uma é usando um campo hidden para passar a ação, outra é por parâmetro... Eu prefiro recomendar que você separe em vários arquivos menores um para cada ação, é mais fácil de não se perder ou dar erro.

Mas se você realmente quiser fazer tudo em um lugar só..  tente desta forma:

 

Formulário:

<form action="processaAlgo.php" method="post">
  <input type="text" name="nome" placeholder="Nome" />
  <input type="text" name="email" placeholder="E-mail" />
  <input type ="hidden" name="acao" value="cadastro" />
  <input type="submit" value="Cadastrar" /> 
</form> 

Veja que ele possui um campo hidden com o valor "cadastro"

 

Agora no php chamado processaAlgo.php   você recebe desta forma:

//Recebe os dados do formulário
$nome = $_POST["nome"]
$email = $_POST["email"];
$acao = $_POST["acao"];

//inclui a conexao
include 'conexao.php';

//Testa a ação
if($acao == "cadastro"):
  //faz a instrução de inserção  

   $QueryCreate = mysqli_query($link, 'INSERT INTO usuario(nm_usuario, email_usuario, senha_usuario) VALUES ("$nome","$email")');
   if($QueryCreate): echo 'Cadastro com sucesso';
   else: echo'Erro ao cadastrar';
   endif;
   echo'<hr />';

else if($acao == "editar"):
  //faz a instrução de edição

else if($acao == "deletar"):
  //faz a instrução de deleção

endif;

Podes fazer também com switch case se não quiser usar esse monte de IF e else...

Contudo, a melhor opção para você que está iniciando é fazer tudo separado.. criar um arquivo cadatro.php, outro editar.php, e outro deletar.php .. com seus respectivos códigos.

 

PS: para editar, e apagar é preciso informar o ID do registro. Nesse caso, quando for listar, é necessário que retorne do banco o valor ID auto incrementado e passa-lo por parâmetro via GET.

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!