在'id' 欄位自動遞增的MySQL 表中插入一行時,擷取插入行的「id」是一項常見任務。雖然一種方法涉及插入行,然後查詢匹配的行,但這會引入潛在的競爭條件。
為了避免此問題,PHP 提供了 mysqli_insert_id( ) 函數,它直接檢索給定 MySQL 連接的最後插入行的 ID。此方法可確保可靠地取得 ID,而不會出現競爭條件或重複結果的風險。
<?php $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); ?>
另一種方法涉及使用 MySQL 的 LAST_INSERT_ID() 函數,可以在多表插入操作中使用。在這種方法中,行被插入到多個表中,並且 LAST_INSERT_ID() 函數確保「id」傳播到單一查詢中修改的所有表中。
<?php 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中文網其他相關文章!