tp5使用事务:
/*开启事务*/
Db::startTrans();
try {
//业务逻辑
$is = (new Model())->save(['title' => '楠楠'],['id' => 1]);
if (!$is){
throw new PDOException('修改失败');
}
Db::commit();//执行成功,提交事务
return $is;
}catch(\Exception $e){
Db::rollback();// 执行失败,事务回滚
exit($e->getMessage());// 输出错误信息
}
原生代码:
<?php
//创建连接
$res = mysqli_connect('localhost','username','password');
//判断是否链接成功
if(!$res) exit('数据库连接失败');
//设置字符集
mysqli_set_charset($res , 'utf8');
//选择数据库
mysqli_select_db($res,'myDatabase');
//准备sql语句
$sql1 = "正确的插入语句";
$sql2 = "错误的插入语句";
//发送sql语句
$result1 = mysqli_query($res , $sql1);
$result2 = mysqli_query($res , $sql2);
if($result1 && $result2) {
//提交事务
mysql_query(“COMMIT”);
echo "提交成功";
} else {
//执行失败,事务回滚
mysql_query("ROLLBACK");
echo '数据回滚';
}
//事务结束
mysql_query("END");
pdo代码:
try {
//实例化PDO对象
$pdo = new PDO("mysql:host=localhost;dbname=test","root","root",array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//开启事务
$pdo->beginTransaction();
//执行sql语句
$pdo->exec("insert into site(name,pwd,sn) values('nannan','123456','123456789')");
$pdo->exec("insert into site_info(name,pwd,sn) values('nannan1',123456','012345678')");
//提交事务
$pdo->commit();
//PDO PDOStatement PDOException
} catch(PDOException $e) {
//回滚事务
$pdo->rollBack();
echo "数据回滚";
}