MySQL是流行的關系型數據庫管理系統,而PHP則是廣泛使用的腳本語言。它們之間的聯合使用是Web應用程序開發中的常見模式。在MySQL和PHP之間進行交互和通信時,提交(commit)是一個非常重要的概念。
MySQL中的提交是指將更改持久化到磁盤,使它們永久存在。與提交相關的術語包括回滾和保存點。回滾(rollback)是將MySQL中未提交的更改還原為原始狀態的操作。保存點(savepoint)是一種機制,可以為事務中的一組更改創建標記,以便在需要時回滾到該標記。
與MySQL和PHP的交互中,提交一般用于將更改寫入MySQL數據庫。考慮以下示例PHP代碼片段:
connect_errno) { echo "Failed to connect to MySQL: " . $mysqli ->connect_error; exit(); } // Perform queries and updates $mysqli ->query("INSERT INTO mytable(name, age) VALUES('John', 30)"); $mysqli ->query("UPDATE mytable SET age=31 WHERE name='John'"); // Commit changes $mysqli ->commit(); // Close connection $mysqli ->close(); ?>在這個例子中,我們實例化了一個mysqli對象,并使用它來連接MySQL數據庫。然后,我們以兩個SQL語句的形式執行了一些查詢和更新。最后,我們調用了commit()方法,以使更改成為永久性的。 需要注意的是,如果在此之前發生錯誤,我們仍然需要回滾到先前的狀態。為此,我們可以使用回滾機制,它被用于檢測和撤消未提交的更改。考慮以下示例:
connect_errno) { echo "Failed to connect to MySQL: " . $mysqli ->connect_error; exit(); } // Begin transaction $mysqli ->begin_transaction(); // Perform queries and updates $mysqli ->query("INSERT INTO mytable(name, age) VALUES('John', 30)"); $mysqli ->query("UPDATE mytable SET age=31 WHERE name='John'"); // Error occurred, rollback if ($mysqli ->errno) { $mysqli ->rollback(); echo "Failed to update database."; } else { // Commit changes $mysqli ->commit(); echo "Database updated successfully."; } // Close connection $mysqli ->close(); ?>在這個例子中,我們使用了mysqli對象的begin_transaction()方法,以創建一個新的事務。事務的修改只有在提交操作之后才會持久存儲。我們嘗試向MySQL數據庫中插入一行和更新一行。然而,如果在執行這些更改時出現錯誤,則會執行回滾操作,以將未提交的更改還原為原始狀態。 提交是MySQL和PHP交互中的一個重要概念。它確保更改立即寫入數據庫,并為應用程序提供一致性和可靠性。