首頁 >資料庫 >mysql教程 >如何在 PHP/MySQL 中高效檢索 INSERT 後的自增 ID?

如何在 PHP/MySQL 中高效檢索 INSERT 後的自增 ID?

Barbara Streisand
Barbara Streisand原創
2025-01-05 02:14:46311瀏覽

How to Efficiently Retrieve the Auto-Increment ID After an INSERT in PHP/MySQL?

在PHP/MySQL 中插入一行並檢索其'id'

在'id' 欄位自動遞增的MySQL 表中插入一行時,擷取插入行的「id」是一項常見任務。雖然一種方法涉及插入行,然後查詢匹配的行,但這會引入潛在的競爭條件。

解決方案:使用 mysqli_insert_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);
?>

替代解決方案:LAST_INSERT_ID()

另一種方法涉及使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn