这个问题已经回答过很多次了:MySQL: LAST_INSERT_ID() returns 0
您正在脱离上下文使用该功能。仅当您在此之前立即插入一行时,它才会起作用:
INSERT INTO 'subscription' (name) VALUES ('John Smith');
SELECT LAST_INSERT_ID() FROM subscription
但是,您可以选择 id 最高的行,这在逻辑上是最近添加的...
SELECT MAX( id ) FROM subscription;
然而,标准方法是简单地调用 mysqli_insert_id 或 mysql_insert_id(取决于您使用的是 mysqli 还是 mysql PHP 库。我应该补充一点,mysql 库是非常不可取的使用,因为它几乎完全被弃用)。理想情况下,这就是整个事情的样子:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$mysqli->query("INSERT INTO 'subscription' (name) VALUES ('John Smith');");
printf ("New Record has id %d.\n", $mysqli->insert_id);
//Output is something like: New Record has id 999
如果您没有在与收集最新行 ID 相同的脚本中插入订阅,请使用“选择最大值”方法。鉴于您提到了“1 个脚本”,这似乎不太可能
此外,如果您的 ID 不连续,或者您没有 ID 字段,或者您的行 ID 高于您刚刚添加的行 ID,您可能应该考虑使用“date_added”列来确定哪一个真的是最新的。然而,这些情况不太可能发生。