欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php 事務串行

楊小玲1年前5瀏覽0評論

現如今,Web開發行業已經發展到了一種不可或缺的程度,同時也呈現出一個趨勢,那就是web應用越來越逐漸復雜。因此,使用事務在PHP開發過程中已經成為了不可或缺的部分。 PHP的事務串行可以有效地控制數據的一致性,確保操作的準確性和安全性。

什么是事務?

在數據管理系統中,一個事務指的是一組對某個數據邏輯上的上的一些操作,這些操作要么全部完成,要么全部不完成,不會遺留任何一項操作的部分完成。

比如說,一個銀行定期存款的操作,如果不小心把客戶的錢分散到了不同的資金賬戶,這其中的每一個步驟都必須全部完成,即扣除客戶的活期賬戶金額,同時將其加入到上述的固定期限賬戶,同時完成相關的數據記錄等等操作。這就是一個事務。

以如下代碼作為例子:

//連接數據庫
$con=mysqli_connect("localhost","my_user","my_password","my_db");
//檢查鏈接是否成功,如果不成功,則提示錯誤信息
if (mysqli_connect_errno())
{
echo "連接失敗: ".mysqli_connect_error();
}
//針對事務,設置SQL語句
mysqli_query($con,"START TRANSACTION");
//執行一些列SQL語句
mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");
mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Glenn', 'Quagmire', '33')");
//提交結束
mysqli_query($con,"COMMIT");

上面的代碼就是一個簡單的事務,事務的核心邏輯是通過“BEGIN”,“COMMIT” 和 “ROLLBACK” 三個命令——構成的。在下面的代碼中,我們將模擬一個小例子來說明事務串行的重要性。

例如,在下面的這個數據表中,我們包含了用戶的ID、用戶名、密碼和年齡字段,這是一個典型的用來存儲用戶數據的表。在實例中,我們會首先沿用以上例子,將兩條INSERT語句放在一個事務中,確保將新用戶的數據插入到數據庫時都有效的存儲。 :

CREATE TABLE testtrans(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255),
password VARCHAR(255) NOT NULL,
age INT(3) UNSIGNED
);

如下代碼展示實現了多次執行時發生的錯誤,之后再模擬一遍,通過添加ROLLBACK語句實現“事務回滾”,即當一條INSERT語句出現錯誤時,整個事務就無法完成,所以新添加的數據行不會出現在數據庫中。:

$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
if ($mysqli->connect_errno) {
die("Connection failed: " . $mysqli->connect_error);
}
//開始事務
$mysqli->begin_transaction();
try{
$mysqli->query("INSERT INTO testtrans (username, password, age) VALUES('foo','bar',20)");
$mysqli->query("INSERTT INTO testtrans(username,password,age) VALUES('example','123',22)");
//提交事務
$mysqli->commit();
}catch(mysqli_sql_exception $exception){
$mysqli->rollback();
throw $exception;
}

在上述代碼中,當我們第二次插入數據的時候,由于SQL語法錯誤,就像例子一展示的那樣,你將會看到一個包含錯誤的SQL語句的異常消息。

最后指出,這是僅僅是通過使用PHP內置的MySQLi類庫,能夠在大多數情況下讓事務工作良好,在特定情況下可能還需要其他的方法和技術。 但是,最重要的是保持理性、明確和始終如一的方法。