Ir para o conteúdo
AngeloLopes

[Resolvido] Erro ao executar query (foreign key constraint fails)

Mensagens Recomendadas

AngeloLopes

Estou a desenvolver um site, e estou com um problema, dá-me este erro quando tento inserir um formulário:

Error: Cannot add or update a child row: a foreign key constraint fails (`gesinf`.`tomadas`, CONSTRAINT `tomadasala`
FOREIGN KEY (`ID_IdentificacaoGabinete`) REFERENCES `sala` (`ID_IdentificacaoGabinete`)
ON DELETE NO ACTION ON UPDATE NO ACTION)

Alguém sabe o que é?

Editado por brunoais
formatação melhorada.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AngeloLopes

Sim estou acho :/

Do genero eu estou a apresentar o ID_IdentificacaioGabinete numa combobox, e eu quando abro a pagina ele apresenta, os valores respetivos, mas quando meto adicionar ele dame este erro no entanto, pode ser de uma coisa que eu reparei, e que eu eliminei as chaves estrangeiras para fazer um teste e ha dois campos do forum que nao inserem na base de dados todos os caracteres que inseri no furmolario, por exemplo se escolheres na combobox IdentificacaoGabinete o valor "009" ele so insere o "00" e deixa de fora o "9", se calhar e por isso que depois da erro quando tem chave estrangeira, mas nao sei o porque de ele estar a fazer isso :(

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Então o melhor é ires por partes.

Consegues ver exatamente qual o comando que está a ser executado na base de dados?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AngeloLopes

E um insert :

exactamente este aqui:

<?php
		 if(isset($_POST['idsala']) && isset($_POST['estadotomada']))
			 {

				 $con=mysqli_connect("127.0.0.1","root","","gesinf");
				 // Check connection
				 if (mysqli_connect_errno())
					 {
							 echo "erro de ligação!";

					 }

				 $sql="INSERT INTO tomadas (Designacao, ID_IdentificacaoGabinete, ID_Estado, NTelefone, Observacoes)VALUES(' $_POST[DesignacaoTomada]',' $_POST[idsala]','$_POST[estadotomada]','$_POST[telefone]','$_POST[observacoes]')";
				 if (!mysqli_query($con,$sql))
					 {
						 die('Error: ' . mysqli_error($con));

					 }
					 echo "Registado com sucesso!";
					 mysqli_close($con);
			 }
	 ?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Estava era a referir se conseguias mostrar o conteúdo desse insert

Só para testes, coloca lá na linha a seguir ao $sql=...

die($sql);

E mostra o que está na variavel

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AngeloLopes

Mostra isto:

INSERT INTO tomadas (Designacao, ID_IdentificacaoGabinete, ID_Estado, NTelefone, Observacoes)VALUES(' 555V',' 009','2','1234','ASFASF')

Okay ja entendi o erro ;)

O erro e que ele esta a dar um espaço antes do que insere, isso vai fazer com que o o valor seja " 555V" e " 009" ou seja como o espaço tambem é um caracter e na bd so deixa meter 3 caracteres, entao ele corta o ultimo por isso e que ele nao estava a relacionar com a tabela anterior, a resolução foi nesta linha :

$sql="INSERT INTO tomadas (Designacao, ID_IdentificacaoGabinete, ID_Estado, NTelefone, Observacoes)VALUES(' $_POST[DesignacaoTomada]',' $_POST[idsala]','$_POST[estadotomada]','$_POST[telefone]','$_POST[observacoes]')";

fazer isto :

$sql="INSERT INTO tomadas (Designacao, ID_IdentificacaoGabinete, ID_Estado, NTelefone, Observacoes)VALUES('$_POST[DesignacaoTomada]','$_POST[idsala]','$_POST[estadotomada]','$_POST[telefone]','$_POST[observacoes]')";

Ou seja tirar os espaçoes antes dos dois primeiros Posts,

Obrigado Nelson por me teres explicado mais um comando para ver os erros, ja que isto nao faz debug xD o que facilitaria muito mais ;)

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Esse ID_IdentificacaoGabinete é de que tipo?

Na tabela sala tens algum registo com o campo ID_IdentificacaoGabinete com ' 009' ? (atenção ao espaço antes do 009)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.