Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KraD

[Resolvido] Erro ao inserir dados

Recommended Posts

Pessoal,

 

Estou com uma dificuldade ao realizar inserção no banco de dados utilizando PHP.

Estou utilizando o seguinte código:

 

[indent]//Query que realiza a inserção dos dados no banco de dados na tabela teste
$insert_tb_teste = "INSERT INTO teste (nome, email, sexo, ddd, telefone, endereco, cidade, estado, bairro, pais ) VALUES ('$nome', '$email', '$sexo', '$ddd', '$tel', '$endereco', '$cidade', '$estado', '$bairro', '$pais')";

### Select desejado

$sql= "SELECT id_teste FROM teste WHERE nome = '$nome'";
###

### Executa o select e guarda na variavel $result

$result = mysql_query($sql,$conexao) or die(mysql_error());
$linha = mysql_fetch_array($result);
$id_fk = $linha["id_teste"];

echo "$id_fk\n";

//$post_id = mysql_insert_id($conexao);

//echo "$post_id </br>";

//Query que realiza a inserção dos dados no banco de dados na tabela teste
$insert_tb_login = "INSERT INTO login (login, senha, fk_teste_login) VALUES ('$login', '$senha', '$id_fk')";


$resultado_teste = mysql_query($insert_tb_teste, $conexao) or die("Ocorreu um erro e seus registros não foram inseridos na tabela teste </br>" .mysql_error());

$resultado_login = mysql_query($insert_tb_login, $conexao) or die("Ocorreu um erro e seus registros não foram inseridos na tabela login </br>" .mysql_error());

echo "Cadastro realizado"; [/indent]

 

Tentar explicar a lógica! Tenhos duas tabelas (teste e login), na tabela teste consta dos dados básicos do usuário como nome e etc já na tabela login apresenta os dados como senha e o user para realizar autenticação no sistema. Na tabela login existe uma FK que puxa o id da tabela "teste" para fazer referencia na tabela login.

 

O problema que ao realizar o cadastro, apresenta o seguinte erro.

Ocorreu um erro e seus registros não foram inseridos na tabela login

Cannot add or update a child row: a foreign key constraint fails (`tsanderson`.`login`, CONSTRAINT `fk_teste_login` FOREIGN KEY (`fk_teste_login`) REFERENCES `teste` (`id_teste`))

 

Porém ele realizar a inserção na tabela teste com os dados do usuário, não realizando apenas a inserção dos dados na tabela login. Ao atualizar a página, ele cria uma nova inserção na tabela teste e cria a FK na tabela login.

 

Não consegui até o momento descobrir o problema.

Espero que possam me ajuda ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como o próprio erro já diz: Há um erro de foreign key..., mas se os dados ESTÃO na tabela teste não devia acontece.

 

Você já tentou inserir o registro manualmente?

 

Dê um print na sua $insert_tb_login antes de executá-la para ver o que está sendo enviado.

 

Uma dica:

 

Se quiser pegar o ID do registro sem precisar da um SELECT, após o INSERT você consegue resgatar utilizando a função

 

mysql_insert_id(); 

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como o próprio erro já diz: Há um erro de foreign key..., mas se os dados ESTÃO na tabela teste não devia acontece.

 

Você já tentou inserir o registro manualmente?

 

Dê um print na sua $insert_tb_login antes de executá-la para ver o que está sendo enviado.

 

Uma dica:

 

Se quiser pegar o ID do registro sem precisar da um SELECT, após o INSERT você consegue resgatar utilizando a função

 

mysql_insert_id(); 

 

[]'s

 

Então, vlw pela ajuda :D

Imprimei o que ele estava retornando o valor da consulta, ou seja essa parte aqui:

 

$linha = mysql_fetch_array($result);
$id_fk = $linha["id_teste"];

 

Tentei utilizar o mysql_insert_id(); porém ta ficando com o valor 0. Eu devo colocar alguma coisa dentro dos parênteses? Se sim, ficaria desse modo ou não mysql_insert_id($insert_tb_teste);?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, vlw pela ajuda :D

Imprimei o que ele estava retornando o valor da consulta, ou seja essa parte aqui:

 

$linha = mysql_fetch_array($result);
$id_fk = $linha["id_teste"];

 

Tentei utilizar o mysql_insert_id(); porém ta ficando com o valor 0. Eu devo colocar alguma coisa dentro dos parênteses? Se sim, ficaria desse modo ou não mysql_insert_id($insert_tb_teste);?

 

Pera ae, nun entendi! xD Conseguiu descobrir o erro?

 

Então, não precisa colocar nada, o que você tem que fazer é colocá-la logo após o INSERT.

 

Por exemplo:

 

<?php
mysql_query("Insert Tabela(Nome, Idade) Values('Tio Sam', 100)");
$Id = mysql_insert_id();
?>

 

Mas vale lembrar que ele irá retornar o ID do campo que está setado como auto_increment.

http://php.net/manual/pt_BR/function.mysql-insert-id.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pera ae, nun entendi! xD Conseguiu descobrir o erro?

 

Então, não precisa colocar nada, o que você tem que fazer é colocá-la logo após o INSERT.

 

Por exemplo:

 

<?php
mysql_query("Insert Tabela(Nome, Idade) Values('Tio Sam', 100)");
$Id = mysql_insert_id();
?>

 

Mas vale lembrar que ele irá retornar o ID do campo que está setado como auto_increment.

http://php.net/manual/pt_BR/function.mysql-insert-id.php

 

Então, pelo que você me explicou coloquei para imprimir o que estava passando no segundo insert, na tabela login.

No resultado não estava retornando o select entendeu?

 

Ai testei usando o mysql_insert_id e ta retornando 0, mesmo sendo inserido na tabela corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.