上一篇博客詳細講解了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=utf8salary表:
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=utf8php代碼:
<?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版本上的運用,由于例子簡陋,有些地方也沒有涉及,以后有時間再繼續補充!
新聞熱點
疑難解答
圖片精選