我插入一行在用戶表註冊一個新用戶的ID。我想獲得user_id字段(這是自動增量)並在另一個查詢中使用它。這裏提供了一個解決方案: How to get the ID of INSERTed row in mysql?但我想知道如果在我插入一個新行並且在我的php代碼中運行mysql_insert_id()函數之前另一個用戶正確註冊,會發生什麼情況。該函數將返回什麼?獲取插入的行
獲取插入的行
回答
mysql_insert_id()
返回特定於當前連接的auto_increment
id(這是特定於用戶會話的)。所以,這種類型的競賽條件是安全的。換句話說,兩個同時連接的用戶的插入相互重疊將始終爲自己的會話返回正確的ID,而不會受到干擾。
int mysql_insert_id ([ resource $link_identifier ])
是你的朋友。
從PHP文件:http://es2.php.net/manual/en/function.mysql-insert-id.php
注:
MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。如果沒有找到這樣的鏈接,它會嘗試創建一個,就好像調用mysql_connect()時沒有參數一樣。如果未找到或建立連接,則會生成E_WARNING級別錯誤。
由上成功,0以前的查詢爲AUTO_INCREMENT列生成如果先前的查詢不產生一個AUTO_INCREMENT值,或者爲FALSE成立沒有MySQL連接的ID。
mysql_insert_id()將本地的MySQL C API函數mysql_insert_id()的返回類型轉換爲(PHP中指定的int)一個長整型。如果AUTO_INCREMENT列的列類型爲BIGINT(64位),則轉換可能會導致錯誤的值。相反,在SQL查詢中使用內部MySQL SQL函數LAST_INSERT_ID()。有關PHP的最大整數值的更多信息,請參閱整數文檔。
由於mysql_insert_id()作用於上次執行的查詢,可以肯定的是產生價值的查詢之後立即調用mysql_insert_id()。
MySQL的SQL函數LAST_INSERT_ID()的值總是包含最近生成的AUTO_INCREMENT值,並且查詢之間不復位。
- 1. 獲取插入行的PID
- 2. linq插入:獲取行號
- 3. SQL獲取插入行的行號
- 4. 獲取最後插入的行的ID
- 5. 獲取插入
- 6. 如何獲取插入的表格行?
- 7. MYSQL獲取從今天插入的行
- 8. 獲取最後插入的行主鍵
- 9. 獲取訪問的插入行?
- 10. 從命令行獲取插入的sqlite
- 11. Python/sqlite:獲取新插入行的PK
- 12. 獲取插入行的編號
- 13. 如何獲取插入行的ID(新)
- 14. 使用C#獲取插入行的ID
- 15. Mysql獲取剛剛插入的行
- 16. 如何在oracle中插入,並獲取插入行的ID?
- 17. 獲取爲ON DUPLICATE KEY UPDATE多插入插入的行數?
- 18. 如何獲取「插入忽略stament」中插入行的數量
- 19. 在插入時獲取當前插入的行ID?
- 20. 如何獲取插入行ON插入的ID?
- 21. 獲取插入值
- 22. 獲取插入DOMNode
- 23. MySql:插入一行並獲取內容
- 24. PHPBB3 - 從插入語句獲取行
- 25. MySQLi - 如何獲取行插入到表
- 26. 獲取行號從插入符號
- 27. 插入新行後獲取AUTO_INCREMENT值
- 28. TSQL獲取插入的ID
- 29. 獲取插入的ID MYSQL
- 30. 獲取插入PHP和MySQL行ID與多個插入
@AlirezaNoori沒有專門的PHP - 函數調用本地MySQL的函數'LAST_INSERT_ID()',所以真的自己管理這個數據庫。 –
謝謝。哦,是的,我知道它(我閱讀MYSQL文檔),但我說錯了。抱歉。謝謝你糾正我。 –