簡體   English   中英

通過php在mysql中實現事務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM