2009-10-18 72 views
0

有沒有辦法在一個命令中執行SQL事務?例如PHP MySQL事務

mysql_query(" 
START TRANSACTION; 
INSERT INTO table1 ....etc; 
INSERT INTO table 2.....; 
COMMIT;"); 

或者你是否總是要使用單獨的命令?例如

mysql_query("START TRANSACTION;"); 
mysql_query("INSERT INTO etc etc 

感謝

回答

2

您可以通過使用PDO,而不是純粹的MySQL的語句,

$connection = new PDO('mysql:host=localhost;dbname=test', 'user', 'password'); 
$connection->beginTransaction(); 
$connection->exec('insert into table1...'); 
$connection->exec('insert into table2...'); 
$connection->commit(); 

當然,這只是一個簡單的例子,你應該使用準備語句來代替,並使用綁定變量用戶輸入,所以你贏了不必擔心很多關於sql注入的問題。

0

有了它必須是獨立的調用PHP的mysql_query功能。

0

如果您使用InnoDb作爲存儲引擎,MySql支持事務。 mysql api不允許將多個語句傳遞給mysql_query,但由於每個連接都有一個事務,因此您可以將其分解爲多個調用。