「mysql_insert_id - 獲取在最後一個查詢中生成的ID」mysql_insert_id()如何工作?
想象3個在線用戶調用相同的查詢,例如,插入表格。 用戶一插入表中的行,但用戶號。三個將是最後一個調用查詢的用戶,僅在用戶1之後幾毫秒。
什麼會爲用戶1返回mysql_insert_id?這是他的Id還是用戶三的Id?
如果此功能已被棄用,我可以使用什麼?
「mysql_insert_id - 獲取在最後一個查詢中生成的ID」mysql_insert_id()如何工作?
想象3個在線用戶調用相同的查詢,例如,插入表格。 用戶一插入表中的行,但用戶號。三個將是最後一個調用查詢的用戶,僅在用戶1之後幾毫秒。
什麼會爲用戶1返回mysql_insert_id?這是他的Id還是用戶三的Id?
如果此功能已被棄用,我可以使用什麼?
插入ID被跟蹤每個連接。沒有持久連接,每個腳本執行都有自己的連接。通過持久連接,每個Apache進程都有自己的MySQL連接(但是每個進程都依次提供結果 - 所以這不是問題)。只要您在與PHP中的INSERT
查詢具有相同的頁面負載範圍內調用mysql_insert_id()
即可,您沒有問題。
要回答問題的第二部分,您應該使用mysqli
或PDO
(首選)庫。 mysqli
有相應的mysqli_insert_id
。 PDO
有一個lastInsertId()
方法。
+1,但不同意'(首選)' – Mchl 2013-03-07 15:29:54
@Mchl只是嘗試將一個數組綁定到IN()一次,並且您將立即改變主意。 – 2013-03-07 15:38:05
@YourCommonSense哈哈哈。在爲什麼PDO是一個很好的選擇的各種其他原因。它抽象出實現細節。您可以在不必更改代碼的情況下在底層數據庫之間切換。您只需修改不兼容的查詢。 – 2013-03-07 15:43:53
l00k right - >這個問題的數千個問題已經 – 2013-03-07 15:24:45
可能重複[是mysql \ _insert \ _id線程安全嗎?](http://stackoverflow.com/questions/1808337/is-mysql-insert-id線程安全) – legoscia 2014-03-07 18:47:24