Galera deu um erro na inserção
Galera eu to tentado fazer cadastro pelo site em pdo, porém ele exibe a mensagem de que o cadastro foi feito porém quando vou no banco num tem nada lá pq isso ocorre?
<form id="form1" name="form1" method="post" action="cadastro.php"> <p>Nome: <input name="email" type="text" id="nome" /></p> <p>Email: <input name="email" type="text" id="email" /></p> <p>Senha: <input type="text" name="senha" /></p> <input type="submit" name="post_back" id="button" value="Cadastrar" /> </form> <?php session_start(); require("config.php"); if(isset($_REQUEST["post_back"])){ if(empty($_POST&["nome"]) || empty($_POST&["email"]) || empty($_POST&["senha"])){ echo "<script>alert('Preencha todos os campos antes de enviar seu cadastro!');</script>"; }else{ $tb = $conn->prepare("insert* into usuario(nm_usuario, email_usuario, senha_usuario) values(:nome, :email, :senha)"); $tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR); $tb->execute(); $tb = null; echo "<script>alert('Cadastro efetuado com sucesso!\\nFaça seu login agora');document.location='index.php';</script>"; } } ?>
Hiago Orneles
Curtidas 1
Mais Respostas
Fabio Basso
25/04/2016
Há um asterisco sobrando na instrução insert:
ERRADO: insert* into usuario(nm_ usuario...
CERTO: insert into usuario(nm_usuario...
ERRADO: insert* into usuario(nm_ usuario...
CERTO: insert into usuario(nm_usuario...
GOSTEI 0
Hiago Orneles
25/04/2016
Não e isso eu já tentei sem o asterisco
GOSTEI 0
Jothaz
25/04/2016
Posta a mensagem de erro.
Mas tem de tirar o *, senão não funciona.
Mas tem de tirar o *, senão não funciona.
GOSTEI 0
Hiago Orneles
25/04/2016
Ele não dá mensagem ele fala que o usuário foi cadastrado porém quando vou no banco não tem nenhum usuário cadastrado
GOSTEI 0
Jothaz
25/04/2016
Ative os erro do PHP e veja se retorna algo:
error_reporting(0);
GOSTEI 0
William
25/04/2016
Faça a correção que o Jothaz citou e capture o retorno do método "execute()", ele retorna TRUE se sucesso e FALSE se houver falha.
Outra dúvida, é esse o nome do campo mesmo "nm_usuario" ?
$retorno = $tb->execute(); if($retorno): //sucesso else: //falha endif;
Outra dúvida, é esse o nome do campo mesmo "nm_usuario" ?
GOSTEI 0
Hiago Orneles
25/04/2016
Coloco isso no topo do código?
Ative os erro do PHP e veja se retorna algo:
error_reporting(0);
GOSTEI 0
Hiago Orneles
25/04/2016
Faça a correção que o Jothaz citou e capture o retorno do método "execute()", ele retorna TRUE se sucesso e FALSE se houver falha.
Outra dúvida, é esse o nome do campo mesmo "nm_usuario" ?
$retorno = $tb->execute(); if($retorno): //sucesso else: //falha endif;
Outra dúvida, é esse o nome do campo mesmo "nm_usuario" ?
Tiro akele null que tá no meu atual código, vc ta perguntado se existe o nm_usuario como o nome de uma coluna no banco de dados ?
GOSTEI 0
William
25/04/2016
Tiro akele null que tá no meu atual código, vc ta perguntado se existe o nm_usuario como o nome de uma coluna no banco de dados ?
Sim e Sim
GOSTEI 0
Hiago Orneles
25/04/2016
Galera eu fiz oque vcs falaram e não aconteceu nada, porém quando eu substitui o que vcs falaram pra troca ele parou de exibir as messagens de que os dados estão sendo inseridos sem serrem inseridos abaixo segue o novo modelo do codigo
<?php session_start(); require("config.php"); error_reporting(0); if(isset($_REQUEST["post_back"])){ if(empty($_POST&["nome"]) || empty($_POST&["email"]) || empty($_POST&["senha"])){ echo "<script>alert('Preencha todos os campos antes de enviar seu cadastro!');</script>"; }else{ $tb = $conn->prepare("insert into usuario(nm_usuario, email_usuario, senha_usuario) values(:nome, :email, :senha)"); $tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR); $tb->execute(); $tb = null; $retorno = $tb->execute(); if($retorno): echo "<script>alert('Cadastro efetuado com sucesso!\\nFaça seu login agora');document.location='index.php';</script>"; else: //falha endif; } } ?> <form id="form1" name="form1" method="post" action="cadastro.php"> <p>Nome: <input name="email" type="text" id="nome" /></p> <p>Email: <input name="email" type="text" id="email" /></p> <p>Senha: <input type="text" name="senha" /></p> <input type="submit" name="post_back" id="button" value="Cadastrar" /> </form>
GOSTEI 0
William
25/04/2016
Sua conexão está OK?
É necessário apenas um "execute()".
É necessário apenas um "execute()".
$tb = $conn->prepare("insert into usuario(nm_usuario, email_usuario, senha_usuario) values(:nome, :email, :senha)"); $tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR); $tb->execute(); $tb = null; $retorno = $tb->execute();
GOSTEI 0
Hiago Orneles
25/04/2016
Sim pois com a minha conexão puder fazer um login com dados inseridos direito dentro do banco
GOSTEI 0
William
25/04/2016
Tem 3 pontos no seu código que geram dúvida:
1) Porque você está usando o sinal de valor por referência "&" nas variáveis "$_POST&["senha"]"?
2) No seu form não tem nenhum campo com name "nome", porém tem 2 campos com name "email"?
3) Você está tentando inserir a partir de names errados no bindValue?
1) Porque você está usando o sinal de valor por referência "&" nas variáveis "$_POST&["senha"]"?
if(empty($_POST&["nome"]) || empty($_POST&["email"]) || empty($_POST&["senha"])){
2) No seu form não tem nenhum campo com name "nome", porém tem 2 campos com name "email"?
<form id="form1" name="form1" method="post" action="cadastro.php"> <p>Nome: <input name="email" type="text" id="nome" /></p> <p>Email: <input name="email" type="text" id="email" /></p> <p>Senha: <input type="text" name="senha" /></p> <input type="submit" name="post_back" id="button" value="Cadastrar" /> </form>
3) Você está tentando inserir a partir de names errados no bindValue?
$tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); // Correto mas não existe $_POST["nome"] $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); // Correto $_POST["email"] $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR); //Correto $_POST["senha"]
GOSTEI 0
Hiago Orneles
25/04/2016
hm entendi... irei da uma olhada e tentar resolver e qualquer coisa eu volto aki vlw
GOSTEI 0
Hiago Orneles
25/04/2016
Fiz as alterações nos erros que vc me mostrou e ainda sim não conseguir cadastrar, agora ele nem exibe mais a mensagem de cadastro com sucesso sem mesmo cadastrar
<?php session_start(); require("config.php"); error_reporting(0); ?> <form id="form1" name="form1" method="post" action="cadastro.php"> <p>Nome: <input name="nome" type="text" id="nome" /></p> <p>Email: <input name="email" type="text" id="email" /></p> <p>Senha: <input type="text" name="senha" /></p> <input type="submit" name="post_back" id="button" value="Cadastrar" /> </form> <?php if(isset($_REQUEST["post_back"])){ if(empty($_POST["nome"]) || empty($_POST["email"]) || empty($_POST["senha"])){ echo "<script>alert('Preencha todos os campos antes de enviar seu cadastro!');</script>"; }else{ $tb = $conn->prepare("insert into usuario(nm_usuario, email_usuario, senha_usuario) values(:nome, :email, :senha)"); $tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR); $tb->execute(); $tb = null; $retorno = $tb->execute(); echo "<script>alert('Cadastro efetuado com sucesso!\\nFaça seu login agora');document.location='index.php';</script>"; } } ?>
GOSTEI 0
William
25/04/2016
Hiago não me leve a mal, mas você não está analisando o código com atenção.
Contínua errado, esses names não existem!!!
Contínua errado, esses names não existem!!!
$tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR);
GOSTEI 0
Hiago Orneles
25/04/2016
Então eu troco esses
por esses ?
$tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR);
por esses ?
$tb->bindParam(":nome", $_POST["nome"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha"], PDO::PARAM_STR);
GOSTEI 0
Marlon Gera
25/04/2016
Mano, me explica uma coisa esta pagina que você esta mostrando, qual o nome dela? Seria cadastro.php?
Por que você está colocando uma action pra uma página, se você esta fazendo a inserção de dados na mesma pagina?
Não entendi esta parte...
Por que você está colocando uma action pra uma página, se você esta fazendo a inserção de dados na mesma pagina?
<form id="form1" name="form1" method="post" action="cadastro.php">
Não entendi esta parte...
GOSTEI 0
William
25/04/2016
Exato, os names no POST tem que ser correspondentes aos names do form HTML!!!
GOSTEI 0
Hiago Orneles
25/04/2016
Mano, me explica uma coisa esta pagina que você esta mostrando, qual o nome dela? Seria cadastro.php?
Por que você está colocando uma action pra uma página, se você esta fazendo a inserção de dados na mesma pagina?
Não entendi esta parte...
Por que você está colocando uma action pra uma página, se você esta fazendo a inserção de dados na mesma pagina?
<form id="form1" name="form1" method="post" action="cadastro.php">
Não entendi esta parte...
Coloque isso pq caso eu não coloque , a pagina não enviar os dados eu fico clicando no botão e não acontece nada
GOSTEI 0
Hiago Orneles
25/04/2016
Funcionou aki era só essas variveis
vlw ai Willian
$tb->bindParam(":nome", $_POST["nm_usuario"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email_usuario"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha_usuario"], PDO::PARAM_STR);
$tb->bindParam(":nome", $_POST["nome"], PDO::PARAM_STR); $tb->bindParam(":email", $_POST["email"], PDO::PARAM_STR); $tb->bindParam(":senha", $_POST["senha"], PDO::PARAM_STR);
vlw ai Willian
GOSTEI 0
William
25/04/2016
Ufa, que sofrimento!!
Estou finalizando o post.
Estou finalizando o post.
GOSTEI 0