php事務的使用方法(php常用方法)

本文目錄一覽:

請問在php中如何控制多表事務?

php框架中多表事務操作實例,參考如下:

function makeAcquire($nUsers,$nAwards)

{

//更新資料庫

$tranDb = new Model();

$tranDb-startTrans();

for($i = 0; $i sizeof($nUsers); $i++)

{

//更新表Acquire

$flagAc = $tranDb-table(‘Acquire’)-add($acquire);

//更新表Users

$where = array(‘u_id’=$nUsers[$i][‘u_id’]);

$flagU = $tranDb-table(‘Users’)-where($where)-setInc(‘u_man_count’,1);

//更新表Award

$where = array(‘a_id’=$nAwards[$i][‘a_id’]);

$flagA = $tranDb-table(‘Award’)-where($where)-setDec(‘a_count’,1);

}

if($flagAc $flagU $flagA)

{

$tranDb-commit();

}

else

{

$tranDb-rollback();

}

}

php如何使用事務和存儲過程

去掉extention=php_mysqli前的分號 重啟apache

mysqli_query 可執行事務和存儲過程~

php+access如何實現事務處理?

PHP與MYSQL事務處理

/*

MYSQL的事務處理主要有兩種方法。

1、用begin,rollback,commit來實現

begin 開始一個事務

rollback 事務回滾

commit 事務確認

2、直接用set來改變mysql的自動提交模式

MYSQL默認是自動提交的,也就是你提交一個QUERY,它就直接執行!我們可以通過

set autocommit=0 禁止自動提交

set autocommit=1 開啟自動提交

來實現事務的處理。

當你用 set autocommit=0 的時候,你以後所有的SQL都將做為事務處理,直到你用commit確認或rollback結束。

注意當你結束這個事務的同時也開啟了個新的事務!按第一種方法只將當前的作為一個事務!

個人推薦使用第一種方法!

MYSQL中只有INNODB和BDB類型的數據表才能支持事務處理!其他的類型是不支持的!

***:一般MYSQL資料庫默認的引擎是MyISAM,這種引擎不支持事務!如果要讓MYSQL支持事務,可以自己手動修改:

方法如下:1.修改c:\appserv\mysql\my.ini文件,找到skip-InnoDB,在前面加上#,後保存文件。

2.在運行中輸入:services.msc,重啟mysql服務。

3.到phpmyadmin中,mysql-show engines;(或執行mysql-show variables like ‘have_%’; ),查看InnoDB為YES,即表示資料庫支持InnoDB了。

也就說明支持事務transaction了。

4.在創建表時,就可以為Storage Engine選擇InnoDB引擎了。如果是以前創建的表,可以使用mysql-alter table table_name type=InnoDB;

或 mysql-alter table table_name engine=InnoDB;來改變數據表的引擎以支持事務。

*/

/*************** transaction–1 ***************/

$conn = mysql_connect(‘localhost’,’root’,’root’) or die (“數據連接錯誤!!!”);

mysql_select_db(‘test’,$conn);

mysql_query(“set names ‘GBK'”); //使用GBK中文編碼;

//開始一個事務

mysql_query(“BEGIN”); //或者mysql_query(“START TRANSACTION”);

$sql = “INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, ‘test1’, ‘0’)”;

$sql2 = “INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, ‘test1’, ‘0’)”;//這條我故意寫錯

$res = mysql_query($sql);

$res1 = mysql_query($sql2);

if($res $res1){

mysql_query(“COMMIT”);

echo ‘提交成功。’;

}else{

mysql_query(“ROLLBACK”);

echo ‘數據回滾。’;

}

mysql_query(“END”);

/**************** transaction–2 *******************/

/*方法二*/

mysql_query(“SET AUTOCOMMIT=0”); //設置mysql不自動提交,需自行用commit語句提交

$sql = “INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, ‘test1’, ‘0’)”;

$sql2 = “INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, ‘test1’, ‘0’)”;//這條我故意寫錯

$res = mysql_query($sql);

$res1 = mysql_query($sql2);

if($res $res1){

mysql_query(“COMMIT”);

echo ‘提交成功。’;

}else{

mysql_query(“ROLLBACK”);

echo ‘數據回滾。’;

}

mysql_query(“END”); //事務處理完時別忘記mysql_query(“SET AUTOCOMMIT=1”);自動提交

/******************對於不支持事務的MyISAM引擎資料庫可以使用表鎖定的方法:********************/

//MyISAM InnoDB 都支持,

/*

LOCK TABLES可以鎖定用於當前線程的表。如果表被其它線程鎖定,則造成堵塞,直到可以獲取所有鎖定為止。

UNLOCK TABLES可以釋放被當前線程保持的任何鎖定。當線程發布另一個LOCK TABLES時,或當與伺服器的連接被關閉時,所有由當前線程鎖定的表被隱含地解鎖。

*/

mysql_query(“LOCK TABLES `user` WRITE”);//鎖住`user`表

$sql = “INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, ‘test1’, ‘0’)”;

$res = mysql_query($sql);

if($res){

echo ‘提交成功。!’;

}else{

echo ‘失敗!’;

}

mysql_query(“UNLOCK TABLES”);//解除鎖定

MyISAM 是MySQL中默認的存儲引擎,一般來說不是有太多人關心這個東西。決定使用什麼樣的存儲引擎是一個很tricky的事情,但是還是值我們去研究一下,這裡的文章只考慮 MyISAM 和InnoDB這兩個,因為這兩個是最常見的。

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如何實現事務提交

事務就是指對資料庫的多次修改,要麼全部成功,要麼全部失敗,不能出現部分修改成功,部分修改失敗的情況。

PHP下操作mysql資料庫要實現事務提交,需注意以下方面:

1, 資料庫表存儲引擎類型設置為innoDB。默認的mysql表採用MYISAM引擎,是不支持事務的,因此要採用以下語句變更:

mysql alter table 『table_name』 engine=innodb;

2,PDO對象設置要設置errmode為Exception,否則第16行SQL執行出錯,語句也不會跳到catch段去rollback, 而是繼續向下執行直到commit。

php 多張表怎樣使用事務

具體代碼如下:

?php

$ch = curl_init();

$timeout = 5;

curl_setopt ($ch, CURLOPT_URL, ”);

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$file_contents = curl_exec($ch);

curl_close($ch);

echo $file_contents;

?

PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。

它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,

執行效率比完全生成HTML標記的CGI要高許多;

PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

原創文章,作者:GYUUU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324426.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GYUUU的頭像GYUUU
上一篇 2025-01-13 13:22
下一篇 2025-01-13 13:23

相關推薦

  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • Python學習筆記:去除字元串最後一個字元的方法

    本文將從多個方面詳細闡述如何通過Python去除字元串最後一個字元,包括使用切片、pop()、刪除、替換等方法來實現。 一、字元串切片 在Python中,可以通過字元串切片的方式來…

    編程 2025-04-29
  • 用法介紹Python集合update方法

    Python集合(set)update()方法是Python的一種集合操作方法,用於將多個集合合併為一個集合。本篇文章將從以下幾個方面進行詳細闡述: 一、參數的含義和用法 Pyth…

    編程 2025-04-29

發表回復

登錄後才能評論