Jump to content

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


Recommended Posts

Posted (edited)

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

Edited by brunoais
formatação melhorada.
Posted

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 😞

Posted

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);
			 }
	 ?>
Posted

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 😉

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.