[英]Implementing Transactions in mysql via php
以下是我的疑問
$db= new mysqli('localhost','user','passcode','dbname');
try {
// First of all, let's begin a transaction
$db->beginTransaction();
// A set of queries; if one fails, an exception should be thrown
$query1="insert into table1(id,name) values('1','Dan')";
$query2="insert into table2(id,name) values('2','Anaba')";
// 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();
}
請問我試圖通過php在mysql查詢中實現事務,我想在其中一個查詢失敗時失敗所有查詢。 上面的代碼拋出一個錯誤(“致命錯誤:調用未定義的方法mysqli :: beginTransaction()”)。請有任何更好的解決方案或想法來解決問題。謝謝你的幫助
$db->begin_transaction();
不
$db->beginTransaction();
http://www.php.net/manual/en/mysqli.begin-transaction.php
如果早於PHP 5.5,那么使用
$db->autocommit(true);
代替
根據文檔, begin_transaction()
是PHP 5.5中的新增功能。 (剛剛幾周前發布)
如果您收到錯誤消息,表明它不存在,則可能意味着您使用的是舊版本的PHP。
如果您認為自己運行的是PHP 5.5,請通過在同一腳本中運行此版本來驗證您的PHP版本:
echo(phpversion());
有時,機器上存在多個版本的PHP,並且您的腳本實際上可能不會在您認為的版本中執行。
您可以實現$ count,類似於:
$err_count = 0;
$query1 = "insert into table1(id,name) values('1','Dan')";
if(!$query1)
$err_count++;
if($err_count>0)
throw new Exception("error msg");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.