Pergunta

Preciso usar variável definida pelo usuário em uma consulta INSERT para MySQL, veja um exemplo abaixo:

INSERT INTO `posts`(`id`) VALUES(NULL);
SET @last_insert_id = LAST_INSERT_ID();
INSERT INTO `comments`(`id`, `post_id`) VALUES(NULL, "@last_insert_id");

Este exemplo não funciona e inseriu 0.O que estou fazendo de errado?

Foi útil?

Solução

Não há necessidade de armazená-lo em uma variável.Você pode simplesmente ligar LAST_INSERT_ID() dentro do seguinte INSERT declaração.

INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, LAST_INSERT_ID());

...a menos que você tenha várias inserções para executar usando esse ID.

Nesse caso, a sintaxe adequada para usar a variável é fazê-lo sem aspas:

INSERT INTO `posts`(`id`) VALUES (NULL);
SET @last_insert_id = LAST_INSERT_ID();
/* Several new entries using the same @last_insert_id */
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top