Question

Je dois utiliser une variable définie par l'utilisateur dans une requête INSERT pour MySQL, voir un exemple ci-dessous :

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

Cet exemple ne fonctionne pas et a inséré 0.Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Il n'est pas nécessaire de le stocker dans une variable.Tu peux simplement appeler LAST_INSERT_ID() à l'intérieur de ce qui suit INSERT déclaration.

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

...sauf si vous avez plusieurs insertions à effectuer en utilisant cet identifiant.

Dans ce cas, la syntaxe appropriée pour utiliser la variable est de le faire sans guillemets :

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top