在PHP/MySQL 中檢索插入行的ID
使用MySQL 資料庫時的常見任務之一是插入一行並隨後檢索其自動產生的ID。這個過程涉及兩個不同的查詢,可能會在插入行和獲取 ID 之間引入時間間隔,這可能會導致競爭條件。
幸運的是,PHP 為這個問題提供了一個簡單的解:mysqli_insert_id() 函數。以下程式碼示範了其用法:
$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db'); mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')"); $id = mysqli_insert_id($link);
mysqli_insert_id() 直接擷取最近的 INSERT 語句產生的 ID,無需額外查詢。這種方法保證檢索到的 ID 對應於剛插入的行。
另一種方法是在單一查詢中利用 MySQL 的 LAST_INSERT_ID() 函數。透過組合多個INSERT 語句,可以同時更新多個表並避免單獨檢索ID 的麻煩:
mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
需要注意的是,每個MySQL 連接都維護自己的ID 序列,防止之間潛在的衝突並發連線。
以上是如何在 PHP/MySQL 中高效檢索 INSERT 後自動產生的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!