Ir para conteúdo

Arquivado

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

Rusti Stein

Cannot add or update a child row: a foreign key constraint fails

Recommended Posts

Mensagem de erro:

Cannot add or update a child row: a foreign key constraint fails (prova.aluno_prova, CONSTRAINT fk_aluno FOREIGN KEY (matrAluno) REFERENCES aluno (matricula))

Quero inserir por meio de formulário o item 'nota' na tabela 'aluno_prova'. No código PHP abaixo há uma linha de código SQL:

$sql = "INSERT INTO aluno_prova (nota) VALUES ('$nota')";

- que da o erro descrito no início do tópico.

MINHA PERGUNTA: Como seria a sintaxe correta para o BD que segue após o código PHP?

<h1>Cadastro de Nota</h1>
<form name="nota" method="post" action="nota-post.php">
Nota
<input type="double" name="nota" required>
<input type="submit" value="Salvar">
</form>

//nota-post.php

<?php

$nota = $_POST['nota'];

$conexao = new conexao();

$conexao->__set("base", "prova");

$conexao->conectar();

$conexao->selecionarDB();

$sql = "INSERT INTO aluno_prova (nota) VALUES ('$nota')";

if($conexao->executar($sql))

echo "Nota inserida com sucesso ";

$conexao->desconecta();

?>

CREATE DATABASE IF NOT EXISTS `prova`

DEFAULT CHARACTER SET latin1

COLLATE latin1_swedisch_ci;

USE `prova`;

 

DATABASE IF NOT EXISTS `aluno`(

`matricula` int(5) NOT NULL AUTO_INCREMENT,

`nome` varchar(80) NOT NULL,

PRIMARY KEY(`matricula`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

 

CREATE TABLE IF NOT EXISTS `aluno_prova`(

`matrAluno` int(5) NOT NULL,

`codProva` int(4)NOT NULL,

`data` date NOT NULL,

`nota` double NOT NULL,

`observacao` text,

PRIMARY KEY(`matrAluno`, `codProva`),

KEY `fk_prova`(`codProva`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

CREATE TABLE IF NOT EXISTS `prova`(

`codprova` int(4) NOT NULL AUTO_INCREMENT,

`disciplina` varchar(40) NOT NULL,

`peso` double NOT NULL,

PRIMARY KEY(`codprova`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

 

ALTER TABLE `aluno_prova`

ADD CONSTRAINT `fk_aluno` FOREIGN KEY(`matrAluno`)

REFERENCES `aluno`(`matricula`),

ADD CONSTRAINT `fk_prova` FOREIGN KEY(`codProva`)

REFERENCES `aluno`(`codprova`);

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro ocorreu pq a tabela aluno_prova tem um FK que aponta para a tabela aluno, a chave matricula que não foi informada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a a sintaxe correta para essa linha de SQL contida dentro do PHP?


$sql = "INSERT INTO aluno_prova (nota) VALUES ('$nota')";



<h1>Cadastro de Nota</h1>

<form name="nota" method="post" action="nota-post.php">

Nota

<input type="double" name="nota" required>

<input type="submit" value="Salvar">

</form>


//nota-post.php


<?php


$nota = $_POST['nota'];


$conexao = new conexao();


$conexao->__set("base", "prova");


$conexao->conectar();


$conexao->selecionarDB();


$sql = "INSERT INTO aluno_prova (nota) VALUES ('$nota')";


if($conexao->executar($sql))


echo "Nota inserida com sucesso ";


$conexao->desconecta();


?>


Compartilhar este post


Link para o post
Compartilhar em outros sites

aluno_prova tem 5 colunas só uma está sendo inserida (nota) ,

matrAluno` , codProva e data são NOT NULL e devem ser informadas e

matrAluno ainda é FK de outra tabela

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.