2011-12-07 59 views
1

可以說我有這三個MySQL的查詢:多個查詢/回滾用PHP

SELECT customer_id FROM customers WHERE name = 'John' 
INSERT INTO quests_on (quest_id, name, quest_points) VALUES ('1', 'John', '15) 
UPDATE badges_on SET badge_owned = 'owned' WHERE quest_id = '1' 

我將如何使用MySQL的交易,以確保所有的變化是由其他回滾的變化。在這裏使用php中的PDO擴展就足夠了嗎?只需要一些清晰。我也想知道,如果你能在一個事務SELECT查詢,如果交易可以採取不同的路徑(例如,如果從SELECT查詢該值存在與否)

+0

你也需要在支持事務的mysql中使用innodb引擎。 – Khronos

回答

2
$db = new PDO($dsn, $user, $password); 
$db->beginTransaction(); 
try { 
    // do your queries here, using PDO and $db object 
    $db->commit(); 
} catch (PDOException $e) { 
    $db->rollback(); 
} 

欲瞭解更多信息,請閱讀http://www.php.net/manual/en/book.pdo.php

+0

好吧,但這是否意味着我可以在這個事務中有條件,就像在SELECT查詢中沒有結果一樣,運行這個INSERT查詢 – re1man

+0

@PraneetSharma爲什麼不呢?你已經在使用PHP了。您可以測試任何查詢的結果並更改程序流程。 – Nameless