PHP+MySQL事務示例我真的沒有找到使用MySQL事務的PHP文件的正常示例。你能給我舉個簡單的例子嗎?還有一個問題。我已經做了很多編程并且不使用事務。我能把一個PHP函數或者什么東西放進去嗎?header.php如果一個mysql_query失敗了,那么其他人也失敗了?我想我已經搞清楚了,對嗎?mysql_query("SET AUTOCOMMIT=0");mysql_query("START TRANSACTION");$a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')");
$a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')");if ($a1 and $a2) {
mysql_query("COMMIT");} else {
mysql_query("ROLLBACK");}
3 回答

慕田峪9158850
TA貢獻1794條經驗 獲得超8個贊
try { // First of all, let's begin a transaction $db->beginTransaction(); // A set of queries; if one fails, an exception should be thrown $db->query('first query'); $db->query('second query'); $db->query('third query'); // If we arrive here, it means that no exception was thrown // i.e. no query has failed, and we can commit the transaction $db->commit();} catch (Exception $e) { // An exception has been thrown // We must rollback the transaction $db->rollback();}
PDO可以這樣做,這取決于您如何配置它。 看見 和 PDO::ATTR_ERRMODE
和 PDO::ERRMODE_EXCEPTION
否則,使用其他API,您可能需要測試用于執行查詢的函數的結果,并親自拋出異常。
begin
)commit
rollback
)

Cats萌萌
TA貢獻1805條經驗 獲得超9個贊
mysql_query("START TRANSACTION");$a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')"); $a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')");if ($a1 and $a2) { mysql_query("COMMIT");} else { mysql_query("ROLLBACK");}

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
<?php// trans.phpfunction begin(){ mysql_query("BEGIN");}function commit(){ mysql_query("COMMIT");}function rollback(){ mysql_query("ROLLBACK");}mysql_connect("localhost","Dude1", "SuperSecret") or die(mysql_error()); mysql_select_db("bedrock") or die(mysql_error()); $query = "INSERT INTO employee (ssn,name,phone) values ('123-45-6789','Matt','1-800-555-1212')";begin(); // transaction begins$result = mysql_query($query);if(!$result){ rollback(); // transaction rolls back echo "transaction rolled back"; exit;}else{ commit(); // transaction is committed echo "Database transaction was successful";}?>
添加回答
舉報
0/150
提交
取消