Ir para conteúdo

POWERED BY:

Arquivado

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

Andreia Regina

Erro ao tentar inserir registro em tabela com foreing key

Recommended Posts

Olá!tenho as seguintes tabelas:

## Estrutura da tabela `tb_galeria_categ`#CREATE TABLE `tb_galeria_categ` ( `id_categoria` int(6) unsigned zerofill NOT NULL auto_increment, `categoria` varchar(55) NOT NULL default '', `descricao_cat` text NOT NULL, `criacao` date NOT NULL default '0000-00-00', `exibir` char(3) NOT NULL default '', `edicao` date default NULL, PRIMARY KEY (`id_categoria`), KEY `categoria` (`categoria`)) TYPE=InnoDB COMMENT='Galeria de Imagens - Tabela: Categorias' AUTO_INCREMENT=6 ;## Estrutura da tabela `tb_galeria_img`#CREATE TABLE `tb_galeria_img` ( `id_imagem` int(10) unsigned zerofill NOT NULL default '0000000000', `id_categoria` int(6) unsigned zerofill NOT NULL default '000000', `imagem` varchar(30) NOT NULL default '', `img_mini` varchar(35) NOT NULL default '', `descricao` varchar(100) default NULL, `exibir` char(3) NOT NULL default '', `publicacao` date NOT NULL default '0000-00-00', `edicao` date NOT NULL default '0000-00-00', PRIMARY KEY (`id_imagem`,`id_categoria`), UNIQUE KEY `imagem` (`imagem`,`img_mini`), KEY `id_categoria` (`id_categoria`), CONSTRAINT `id_categoria` FOREIGN KEY (`id_categoria`) REFERENCES `tb_galeria_categ` (`id_categoria`)) TYPE=InnoDB COMMENT='Galerias de Imagens - Tabela: Imagens';

e estou utilizando o seguinte para adicionar registros na tb_galeria_img:
$sql="INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES ('$categoria','$nome_img','sim',NOW(),NOW())";
Isso deve estar errado pois me retorna o seguinte erro:

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

GrataAndreia Regina

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Neste Insert está concatenando o id_categoria com apóstrofo (ou plic) '.

O resultado deve está assim:

INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES ('1','nome_imagem','sim',NOW(),NOW());

O campo é numérico, estão o id na tabela pai está como 1, no insert está tentando gravar '1'.

 

Retire estes plics e tente gravar novamente.

 

Qquer coisa estamos ae!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!Não sei se eu entendi o que você disse.Tentei assim:

$sql='INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES ($id_categoria,"$nome_img","sim",NOW(),NOW())';
e não funcionou, está me retornando a seguinte mensagem:

Unknown column '$id_categoria' in 'field list'

Pq ele está entendendo que o $id_categoria é uma coluna http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Obrigada pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu num sei mto de php ehehehe

mas fiz uns testes aqui com esta consulta no seu post e o resultado foi:

INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES ($id_categoria,"$nome_img","sim",NOW(),NOW())

deve ser por isso o erro, tenta assim:

$sql="INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES ($id_categoria,'$nome_img','sim',NOW(),NOW())";

a variável sql concatenada com aspas, e os campos string concatenados com plic.

fiz um teste e ficou assim:

INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES (1,'teste','sim',NOW(),NOW())

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!Como eu disse no post anterior, se eu tiro a aspa simples ele vê a variável como um campo e não acha, preciso que seja inserido como variável pois o valor dela certamente sofrerá variações.Obrigada pela atenção ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrea...

No caso, você precisa usar aspas dupla.

 

$sql = "INSERT INTO tb_galeria_img (id_categoria,imagem,exibir,publicacao,edicao) VALUES ($id_categoria,'$nome_img','sim',NOW(),NOW())";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada!Desculpa não ter entendido o que você falou cassitos. Era isso mesmo!Prog, não querendo abusar, abusando, você poderia me explicar o por quê?Obrigada

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.