Ir para conteúdo

Arquivado

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

thiagomngomes

INSERT com chave estrangeira

Recommended Posts

Olá, estou preciso adicionar os campos nome e mensagem referente a tabela tb_comentario e num_post na qual é uma chave estrangeira da tabela tb_blog onde estou recebendo atraves de um GET

 

testei as 2 maneiras

$chaveEstrangeira = $_GET['num_post'];
$sql = "INSERT INTO (tb_comentario (nome, mensagem, num_post) VALUES ('$nome', '$msg', $chaveEstrangeira))";

onde apresentou o seguinte erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(tb_comentario (nome, mensagem, num_post) VALUES ('Thiago M', 'teste comentario'' at line 1

 

e esse:

$chaveEstrangeira = $_GET['num_post'];

$sql = "INSERT INTO tbl1_nome, tbl1.mensagem, tbl2.num_post
        FROM tb_comentario as tbl1 INNER JOIN tb_blog as tbl2 ON tbl1.num_post = tbl2.num_post
        WHERE tbl1.num_post = $chaveEstrangeira";

 

onde apresentou esse:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' tbl1.mensagem, tbl2.num_post FROM tb_comentario as tbl1 INNER JOIN tb_blog a' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto é a primeira, pelo que conheço a segunda é impossível de fazer

Mas o que acontece na primeira é que você coloca o nome da tabela dentro de parenteses e por isso te retorna o erro de sintax.

 

O correto seria :

$chaveEstrangeira = $_GET['num_post'];
$sql = "INSERT INTO tb_comentario (nome, mensagem, num_post) VALUES ('$nome', '$msg', $chaveEstrangeira)";

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

O correto é a primeira, pelo que conheço a segunda é impossível de fazer

Mas o que acontece na primeira é que você coloca o nome da tabela dentro de parenteses e por isso te retorna o erro de sintax.

 

O correto seria :

$chaveEstrangeira = $_GET['num_post'];
$sql = "INSERT INTO tb_comentario (nome, mensagem, num_post) VALUES ('$nome', '$msg', $chaveEstrangeira)";

pois então retirando o parenteses tbm da erro

 

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai esta o código completo

 


<?php
include "conexao.php";
$nome = $_POST['nome'];
$msg = $_POST['msg'];
$chaveEstrangeira = $_GET['num_post'];
$sql = "INSERT INTO tb_comentario (nome, mensagem, num_post) VALUES ('$nome', '$msg', $chaveEstrangeira)";    

/*$sql = "INSERT INTO tbl1_nome, tbl1.mensagem, tbl2.num_post
        FROM tb_comentario as tbl1 INNER JOIN tb_blog as tbl2 ON tbl1.num_post = tbl2.num_post
        WHERE tbl1.num_post = $chaveEstrangeira";*/
             
$status = mysql_query($sql) or die (mysql_error()); // <-M      o mysql_error para esta linha
if($status==0)
$msg = "Erro ao gravar mensagem!";
else
$msg = "Sucesso ao gravar mensagem!";
mysql_close($link);
?>
<script>
alert('<?php echo $msg; ?>');
location='blog.php';
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Insira também, na tabela "tb_comentario", o id do blog.

Ficaria +/- assim:

TABELA: tb_comentario


id_comentario
id_post
id_blog
nome
mensagem

 

 

Depois é só fazer a consulta com INNER JOIN:

 

SELECT campos... FROM 
	tb_comentario AS C INNER JOIN 
	tb_post AS P INNER JOIN 
	tb_blog AS B
ON C.id_post = P.id_post AND
C.id_blog = B.id_blog

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.