-
Conteúdo Similar
-
Por saholiveira
Eu tenho duas tabelas. Uma delas é a tabela Propriedade e a outra é a tabela Talhão. O Talhão precisa ser identificado pelo ID da propriedade, portanto, temos uma chave estrangeira.
O problema é que, mesmo com o código aparentemente todo correto, eu não consigo inserir nada na tabela Talhão por causa da chave estrangeira. O erro que aparece:
Erro: INSERT INTO talhao (`nome`, `id_propriedade`) VALUES ('A1', '')
Cannot add or update a child row: a foreign key constraint fails (`teste`.`talhao`, CONSTRAINT `id_propriedade_fk` FOREIGN KEY (`id_propriedade`) REFERENCES `propriedade` (`id_propriedade`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Na verdade, o erro de inserção só ocorre porque aparentemente o mysqli_insert_id não está retornando nada. Quando eu insiro o número da chave estrangeira manualmente, a inserção roda sem erros. A pergunta é: existe alguma outra maneira de recuperar esse id da propriedade para inserir na chave estrangeira de talhão? Já não sei mais o que tentar.
Inserindo dados na tabela propriedade (consigo normalmente, sem erros):
class PropriedadeDAO { function inserirPropriedadeBD($propriedade) { $nome = $propriedade->getNome(); $endereco = $propriedade->getEndereco(); $telefone = $propriedade->getTelefone(); $conexaobd = new ConexaoBD; $conexao = $conexaobd->conectarAoBD(); $sql = "INSERT INTO propriedade (nome, endereco, telefone) VALUES ('$nome', '$endereco', '$telefone')"; if (!mysqli_query($conexao, $sql)) { echo "Erro: " . $sql . "<br>" . mysqli_error($conexao); }else { $propriedade->setID(mysqli_insert_id($conexao)); // Alteração } }
Inserindo dados na tabela talhao:
class TalhaoDAO { function inserirTalhaoBD($talhao) { $nome = $talhao->getNome(); $idPropriedade = $talhao->getPropriedade(); //Alteração $conexaobd = new ConexaoBD; $conexao = $conexaobd->conectarAoBD(); $sql = "INSERT INTO talhao (`nome`, `id_propriedade`) VALUES ('$nome', '$idPropriedade')"; if (!mysqli_query($conexao, $sql)) { echo "Erro: " . $sql . "<br>" . mysqli_error($conexao); } }
A estrutura da tabela talhao está assim:
CREATE TABLE IF NOT EXISTS `talhao` ( `id_parcela` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(20) NOT NULL, `id_propriedade` int(11) NOT NULL, PRIMARY KEY (`id_parcela`), KEY `id_propriedade_fk` (`id_propriedade`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;