LAST_INSERT_ID sẽ chỉ hoạt động đối với khóa chính được tạo tự động, được tạo trên trường auto_increment. Trong trường hợp của bạn, có vẻ như bạn đang cung cấp id một cách rõ ràng, vì vậy, id chèn cuối cùng chưa được đặt.
Điều này là rõ ràng:
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)
Đây là điều ngầm hiểu:
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)