簡體   English   中英

mysqli_insert_id 可靠嗎?

[英]is mysqli_insert_id reliable?

我正在構建一個登錄系統,它使用 mysql 數據庫 (PHP) 中的三個表,稱為用戶、會話和登錄。 所有表都有一個自增索引。 成功登錄后,用戶行將通過存儲在新登錄行中的值鏈接到會話行。 我想知道在這個過程中使用mysqli_insert_id()是否安全。 我擔心如果會話行INSERT期間出現錯誤,登錄行將收到不正確的會話索引號,用戶將登錄到錯誤的會話。

這會有問題嗎? 如果是這樣,有什么好的處理方法嗎?

如果滿足以下條件,該方法將產生可靠的結果:

  • 最后一次INSERT操作成功。
  • 在同一數據庫連接上INSERT成功后立即檢查結果。

大多數情況下,只要您使用相同的數據庫句柄,調用INSERT然后獲取作為下一個操作插入的 ID 就足夠了。

框架會自動為您完成所有這些工作,因此您通常不應該關心它。

如果您想確保您的數據和您執行的操作的完整性,那么我建議您采用“全部或無”方法。 這意味着您的所有查詢都將單獨通過或全部失敗,即使有一個失敗。 您可以使用 MySQL 中的 TRANSACTION & ROLLBACK 功能來實現這一點。 欲了解更多信息,您可以訪問: http : //www.tutorialspoint.com/sql/sql-transactions.htm

最好使用觸發器

當您觸發另一個時,觸發器將執行查詢

看這個教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM