導航:首頁 > 編程語言 > phpmysql事務回滾

phpmysql事務回滾

發布時間:2022-04-26 22:10:43

㈠ 哪位能詳細談談php在MySQL中rollback的使用方法。

好像不支持事務回滾 mysql Max版支持 mysql_query('BEGIN');//開始事務 mysql_query('..........');//中間執行其他sql語句 mysql_query('COMMIT');//成功後提交事務 //mysql_query('ROLLBACK');//失敗後回滾 上面不是php代碼嗎 就是用mysql_query執行而已 在當前mysql中雖然出現了事務的支持,但它還很不成熟,所以,呵呵,先觀望事務吧,採取其他手段達到事務的效果 比如你想刪除或更新一些記錄,你可以創建一個臨時表或者使用預先建立的備份表,將要將要操作的數據備份下來,當其他操作失敗時將這些數據恢復回去。當然實際情況可能更復雜一些。這樣做看起來很麻煩,而且效率值得懷疑,不過需要事務處理的地方應該不會很多,所以麻煩一次兩次還是可以忍受的。 事務處理本身就不是一個高效的、百分百安全的手段,我們完全可以通過優化表的結構、編寫有效的腳本而避免使用事務。關注我也關注

㈡ php mysql事務能解決什麼問題

1、用begin,rollback,commit來實現
begin 開始一個事務
rollback 事務回滾
commit 事務確認
2、直接用set來改變mysql的自動提交模式
MYSQL默認是自動提交的,也就是你提交一個QUERY,它就直接執行!我們可以通過
set autocommit=0 禁止自動提交
set autocommit=1 開啟自動提交
來實現事務的處理。

㈢ php關於mysql資料庫簡單事務回滾問題

$sql2 沒發現錯誤 執行成功。

這個可以分段驗證
直接 print_r($r2) 看是否真的有SQL錯誤
另外 !$r1 這種寫法是否可以判斷錯誤?
你 $r2 如果輸出錯誤 是否是 $r2 === false ? 也許是其他?
用 var_mp 查看下

㈣ thinkphp mysql 更新數據遇到這樣的問題該如何解決

ThinkPHP事務回滾示例如下:
$m=D('YourModel');//或者是M();
$m2=D('YouModel2');
$m->startTrans();//在第一個模型里啟用就可以了,或者第二個也行
$result=$m->where('刪除條件')->delete();
$result2=m2->where('刪除條件')->delete();
if($result && $result2){
$m->commit();//成功則提交
}else{
$m->rollback();//不成功,則回滾
}

㈤ php 怎麼使用Mysql事務實例代碼

$con=mysqli_connect('localhost','root','123456','test');
if(!$con){
exit("連接錯誤");
}
mysqli_set_charset($con,'utf8');
mysqli_query($con,"BEGIN");//開啟事務
$sql="sql語句1";
$sql2="sql語句2";
$res=mysqli_query($con,$sql);
$res1=mysqli_query($con,$sql2);
if($res&&$res1){
mysqli_query($con,"COMMIT");//提交事務
echo'提交成功。';
}else{
mysqli_query($con,"ROLLBACK");//事務回滾
echo'數據回滾。';
}
mysqli_query($con,"END");

㈥ php mysql 事務無法回滾 rollback不起作用

MYSQL中只有INNODB和BDB類型的數據表才能支持事務處理,其他的類型是不支持的.
你可以檢查下你的資料庫用的什麼引擎

㈦ PHP中執行MYSQL事務解決數據寫入不完整等情況

近來稍有時間研究了下MYSQL中的事務操作,在很多場合下很是適用,譬如在注冊的時候需要初始化很多張關聯表的時候,問答回復的時候需要至少同時操作兩張表,這些都會在某些時候只能成功更新一張表,而另外的SQL語句出現錯誤,正常的操作會導致初始化了一張表
,其他的都木有能初始化,這個時候就會導致用戶表裡的用戶信息已經執行插入,導致提示注冊失敗,但是用戶已經注冊了部分信息,這個時候需要程序員去資料庫刪除相應的數據是一個比較不好的事情。
因此這邊考慮使用事務,事務可以進行模擬SQL操作,當所有的SQL都操作成功的時候才進行SQL操作,只要有一個操作失敗就回滾當前事務的所有SQL操作,避免出現上面描述中出現的數據寫入不完整等情況。
下面是鄙人寫的一小段代碼,歡迎大家參考和提出意見:
復制代碼
代碼如下:
/**
*
@todo
多條sql的事務處理
*
@param
$sqls
array
*
@return
boole
true/false
*/
public
function
doArraySqlActionsTran($password,$sqls){
$db
=
$this
->
doSqlLink($password);//打開資料庫鏈接
$db
->
autocommit(FALSE);//設置為不自動提交,因為MYSQL默認立即執行
//獲取SQL執行結果數組
for
($i=0;$i<count($sqls);$i++){
$result[$i]
=
$db
->
query($sqls[$i]);
}
//解析SQL執行結果數組
for
($j=0;$j<count($result);$j++){
if
($result[$j]==FALSE){
$result[$j]='false';
}else{
$result[$j]='true';
}
}
//查找SQL結果數組中是否存在false結果集
if
(in_array('false',$result)){
$sqlResult=FALSE;
}else{
$sqlResult==TRUE;
}
//根據結果集進行資料庫回滾或者執行操作
if
($sqlResult==FALSE){
$db
->
rollback();//判斷當執行失敗時回滾
$return=FALSE;//
正式環境中使用
//$return='ROOLBACK';//test
標記使用
}else{
$db
->
commit();//執行事務s
$return=TRUE;//
正式環境中使用
//$return='COMMIT';//test
標記使用
}
$db->autocommit(true);
//設置為非自動提交——事務處理
$db->close();//關閉連接
return
$return;
}
到此事務執行批量SQL操作基本完成,謝謝大家!

㈧ php mysql commit之後還可以rollback么

事務(transaction)是由查詢和/或更新語句的序列組成。 用 begin、start transaction
開始一個事務,rollback 回滾事務,commit 提交事務。 在開始一個事務後,可以有若干個 SQL 查詢或更新語句,每個 SQL
遞交執行後,還應該有判斷是否正確執行的語句,以確定下一步是否回滾,若都被正確執行則最後提交事務。
事務一旦回滾,資料庫則保持開始事務前狀態。就好象一個被編輯的文件不存檔退出,自然還是保持文件原來的樣子。
所以,事務可被視為原子操作,事務中的 SQL,要麼全部執行,要不一句都不執行。
人家的回答,編輯文件可以理解吧

閱讀全文

與phpmysql事務回滾相關的資料

熱點內容
銀河麒麟字體庫存在哪個文件夾 瀏覽:956
魔獸加丁伺服器的航空叫什麼 瀏覽:152
花冠改裝案例哪個app多 瀏覽:515
成績單app哪個好用 瀏覽:140
北美程序員vs國內程序員 瀏覽:181
php解析xml文檔 瀏覽:121
石墨文檔APP怎麼橫屏 瀏覽:185
牆主鋼筋加密和非加密怎麼看 瀏覽:144
金山區文件夾封套定製 瀏覽:708
soho程序員 瀏覽:672
java位元組截取 瀏覽:525
php提交作業 瀏覽:815
房產還沒解壓可以辦理贈予嗎 瀏覽:224
java毫秒轉分鍾 瀏覽:753
模式識別中文pdf 瀏覽:774
c語言平均數字編譯錯誤 瀏覽:171
單片機算交流 瀏覽:45
php自適應網站 瀏覽:467
2b2t伺服器怎麼獲得許可權 瀏覽:816
c語言javaphp 瀏覽:804