Domanda

Ho bisogno di utilizzare la variabile definita dall'utente in una query di insert per MySQL, vedere un esempio di sottofondo:

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

Questo esempio non funziona e inserito 0. Cosa sto facendo male?

È stato utile?

Soluzione

Non è necessario memorizzarlo in una variabile.Puoi semplicemente chiamare LAST_INSERT_ID() all'interno della seguente istruzione INSERT.

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

... A meno che tu non abbia più inserti per eseguire utilizzando quell'ID.

In tal caso, la sintassi corretta per l'utilizzo della variabile è di farlo senza virgolette:

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);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top