Mysql
 sql >> Base de données >  >> RDS >> Mysql

SELECT LAST_INSERT_ID() renvoie 0 après avoir utilisé l'instruction préparée

LAST_INSERT_ID ne fonctionnerait que pour la clé primaire générée automatiquement, qui a été créée sur le champ auto_increment. Dans votre cas, il semble que vous fournissiez explicitement l'identifiant, donc l'identifiant de la dernière insertion n'est pas défini.

C'est explicite :

mysql> insert into test (id, name) VALUES (5, 'test 2');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

Ceci est implicite :

mysql> insert into test (name) values ('test');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+
1 row in set (0.00 sec)