Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => -1
            [id] => 552330
            [titulo] => Galera deu um erro na inserção
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-04-25 17:27:39
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 472233
            [status] => A
            [isExample] => 
            [NomeUsuario] => Hiago Orneles
            [Apelido] => 
            [Foto] => 
            [Conteudo] => Não e isso eu já tentei sem o asterisco
        )

)

Galera deu um erro na inserção

PHP
Hiago Orneles
   - 25 abr 2016

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?
#Código

<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>";

    }

}
?>

Fabio Basso
|
MVP
Pontos: 105
    25 abr 2016

Há um asterisco sobrando na instrução insert:
ERRADO: insert* into usuario(nm_ usuario...
CERTO: insert into usuario(nm_usuario...

0
|
0

Hiago Orneles
   - 25 abr 2016

Não e isso eu já tentei sem o asterisco

0
|
1

Jothaz
   - 25 abr 2016

Posta a mensagem de erro.

Mas tem de tirar o *, senão não funciona.

0
|
0

Hiago Orneles
   - 25 abr 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

0
|
1

Jothaz
   - 25 abr 2016

Ative os erro do PHP e veja se retorna algo:

#Código

error_reporting(0);

0
|
0

William (devwilliam)
   - 25 abr 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.
#Código

$retorno = $tb->execute();

if($retorno):
    //sucesso
else:
    //falha
endif;


Outra dúvida, é esse o nome do campo mesmo "nm_usuario" ?

0
|
0

Hiago Orneles
   - 25 abr 2016

Coloco isso no topo do código?
Citação:
Ative os erro do PHP e veja se retorna algo:

#Código

error_reporting(0);

0
|
1

Hiago Orneles
   - 25 abr 2016


Citação:
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.
#Código

$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 ?

0
|
1

William (devwilliam)
   - 25 abr 2016


Citação:

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

0
|
0

Hiago Orneles
   - 25 abr 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

#Código

<?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>

0
|
1

William (devwilliam)
   - 25 abr 2016

Sua conexão está OK?

É necessário apenas um "execute()".

#Código

$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();
 

0
|
0

Hiago Orneles
   - 25 abr 2016

Sim pois com a minha conexão puder fazer um login com dados inseridos direito dentro do banco

0
|
1

William (devwilliam)
   - 26 abr 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"]"?
#Código

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"?
#Código
<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?
#Código
$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"]

0
|
0

Hiago Orneles
   - 26 abr 2016

hm entendi... irei da uma olhada e tentar resolver e qualquer coisa eu volto aki vlw

0
|
1

Hiago Orneles
   - 26 abr 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

#Código

<?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>";

    }

}
?>

0
|
1

William (devwilliam)
   - 26 abr 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!!!
#Código

$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);

0
|
0

Hiago Orneles
   - 26 abr 2016

Então eu troco esses

#Código

$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 ?

#Código
$tb->bindParam(":nome", $_POST["nome"], PDO::PARAM_STR);
$tb->bindParam(":email", $_POST["email"], PDO::PARAM_STR);
$tb->bindParam(":senha", $_POST["senha"], PDO::PARAM_STR);

0
|
1

Marlon Gera
   - 26 abr 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?

#Código

<form id="form1" name="form1" method="post" action="cadastro.php">


Não entendi esta parte...

0
|
0

William (devwilliam)
   - 26 abr 2016

Exato, os names no POST tem que ser correspondentes aos names do form HTML!!!

0
|
0

Hiago Orneles
   - 26 abr 2016


Citação:
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?

#Código

<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

0
|
1