国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php實現mysql事務處理實例以及在thinkphp里的運用

2019-11-08 19:49:37
字體:
來源:轉載
供稿:網友

上一篇博客詳細講解了MySQL的事務處理,以及臟讀、不可重復讀、幻讀的基本概念,今天就整理一下mysql的事務如何運用到php中!因為個人原因,就分兩部分,一部分是php原生的事務實例,另一部分就是thinkphp(3.23版本,以后其他的實例)的事務實例。

一:php原生實例

以下是一個比較簡單的事務處理的php實例,在給name表新增用戶的同時,也給薪水表添加數據,這個事務非常簡單。

name表:

CREATE TABLE `name` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(20) CHARACTER SET utf8 NOT NULL DEFAULT '',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

salary表:

 CREATE TABLE `salary` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `uid` int(10) unsigned NOT NULL DEFAULT '0',  `saray` int(11) NOT NULL DEFAULT '0',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

php代碼:

<?php  $mysqli=new mysqli("localhost","root","root","test");if(mysqli_connect_error()){	printf("Connect fail:%s /n",mysqli_connect_error());	exit();}if(!$mysqli->set_charset("utf8")){	printf("Character set utf8: %s is fail /n", $mysqli->error);	exit;}if(!$mysqli->query("set autocommit=0")){	printf("Set autocommit: %s is fail /n", $mysqli->error);	exit;	}if(!$mysqli->query("start transaction")){	printf("Start transaction %s is fail /n",$mysqli->error());	exit;}$sql1=$mysqli->query("insert into name(name) values('lili')");$uid=$mysqli->insert_id;$sql2=$mysqli->query("insert into salary(uid,salary) values('".$uid."',1000)");if(!$sql1||!$sql2){	$mysqli->query("rollback");	printf("Commit: %s is fail /n", $mysqli->error);	exit;}$mysqli->query("commit");echo "提交成功";$mysqli->close();

二:thinkphp實例(版本為3.23)

還是上面的例子,表結構一樣。

<?phpnamespace Home/Controller;use Think/Controller;class TransController extends Controller{	public function ceshi(){		$test=M('name');		$salary=M('salary');		$test->execute("set autocommit=0");		$test->execute("start transaction"); //另一種寫法:$test->startTrans();		$n_data['name']="lin";		$sql1=$test->field('name')->data($n_data)->add();				$s_data['uid'] = $sql1['id'];		$s_data['salary']=1000;		$sql2=$salary->data($s_data)->add();		if(!$sql1&&!$sql2){			$test->execute('rollback');			return;		}		$test->execute('commit');//另一種寫法:$text->commit();		echo "提交成功";	}}以上的簡單實例基本介紹了事務的在原生php和thinkphp3.23版本上的運用,由于例子簡陋,有些地方也沒有涉及,以后有時間再繼續補充!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜宁县| 奉节县| 民县| 嘉峪关市| 建宁县| 宜君县| 曲靖市| 江川县| 康马县| 信丰县| 周至县| 崇文区| 灌南县| 颍上县| 邵东县| 遂昌县| 池州市| 冕宁县| 九龙坡区| 湄潭县| 泰安市| 余干县| 肇源县| 达尔| 梁山县| 阳春市| 潞城市| 江北区| 山阳县| 乌兰浩特市| 荥经县| 根河市| 扶余县| 芜湖市| 阜新市| 建德市| 平武县| 卢湾区| 大港区| 合肥市| 南召县|