如何在PDO中進行SQL查詢知道下一個ID是什麼?我測試了$sql->lastInsertId()
和SELECT LAST_INSERT_ID() FROM my_table
,但根據這些,當我的表中最後一個ID是66時,最後的ID是116。從表中獲取正確的最後一個ID
在此先感謝!
如何在PDO中進行SQL查詢知道下一個ID是什麼?我測試了$sql->lastInsertId()
和SELECT LAST_INSERT_ID() FROM my_table
,但根據這些,當我的表中最後一個ID是66時,最後的ID是116。從表中獲取正確的最後一個ID
在此先感謝!
會select max(lastID) from my_table
工作嗎? (假設包含上次創建的ID的列名稱稱爲lastID)
如果您在ID列上有自動遞增,則下一個ID並不總是last item's ID + 1
。因此,如果插入兩個元素(ID 1和2),請刪除第二個元素並再次插入新元素,其ID將爲3而不是2,但也取決於數據庫引擎。
但是,如果你想獲得最後一個項目的ID可能,例如,通過降ID責令列,選擇第一項的ID
LAST_INSERT_ID()
返回插入與autoincrementation最後一個ID。其實從那時起記錄可能會被刪除(也許所有這些都是從67-116),但這並不會改變自動增量位置,而下一個ID將會是117.
如果你想知道什麼是最大的id你的桌子,然後SELECT max(id) FROM table
可以幫助你。
我希望能說服你改變主意:
id只是一個抽象值,類似於意外的數字。它的目的是獨特。這意味着沒有值必須重複使用。所以,它將永遠是一個全新的ID。
這就是爲什麼你的數據庫使得它116,而不是66
這就是爲什麼你必須是內容與116,不強制其66
且不說兩者lastInsertId()
和SELECT LAST_INSERT_ID()
保證是正確的價值,同時接受了暗示使用max(lastID)
的接受答案。
這樣做! :) 非常感謝!我會盡快接受你的回答。 – Erik 2013-03-15 22:03:47
這個答案本質上是錯誤的,最好被刪除。 – 2013-03-16 07:22:09