mysql简单事务sql语句_mysqli的多条sql语句操作以及简单的事务处理~~~~~

本文介绍了如何在MySQL中执行多条SQL语句,包括更新和查询操作,重点讲解了`multi_query()`函数的使用。同时,文章详细阐述了MySQL的事务处理,包括关闭自动提交、手动提交、回滚操作,并给出了事务处理的步骤和示例代码。通过示例代码展示了如何在事务中确保所有操作要么全部成功,要么全部回滚。
摘要由CSDN通过智能技术生成

首先介绍一下多条sql语句的操作~~~~~

普通的方法: $mysqli->query();

通知他们执行方法 : $mysqli->multi_query();

拼接sql语句

//更新数据(其他的删除,)

$sql = "UPDATE zd_admin SET level = 1 WHERE id = 1;";

$sql .= "UPDATE zd_message SET price = 1 WHERE id =1;";

$sql .= "UPDATE zd_login SET level = 1 WHERE id = 1";

如果是更新语句的话,无论是哪种方法都可以。

但是如果是查询,添加语句的话,因为我们需要查找数据,直接用query就不行

所以要学会使用multi_query()是很重要的

例如:拼接sql语句

//查询语句

sql = "SELECT * FROM zd_admin;";

$sql .= "SELECT * FROM zd_message;";

$sql .= "SELECT * FROM zd_login;";

- 介绍两个个函数

$mysqli->store_result():将数据的结果集取出来

$mysqli->next_result():执行下一个sql语句

思路:这样子的话,首先执行第一sql条,然后获取到数据,进行CURL操作之后,通知它可以执行第二条sql语句..................

注意:$mysqli->multi_query(); 得到的结果true or false,而true or false 是根据第一条sql语句决定

91f5d1a43918a56d3e21b991ef3ce96b.png

//查询数据

$sql = "SELECT * FROM zd_admin;";

$sql .= "SELECT * FROM zd_message;";

$sql .= "SELECT * FROM zd_login;";

$data = $mysqli->multi_query($sql);

//获取结果集合的数据,否则结果集是返回1

$data = $mysqli->store_result();

if(!$data){

echo "第一条sql语句有误";

exit;}

print_r($data->fetch_row());

echo "
";

//将指针移动到下一条sql语句

$mysqli->next_result();

$data = $mysqli->store_result();

if(!$data){

echo "第二条sql语句有误";

exit; }

print_r($data->fetch_row());

echo "
";

//将指针移动到下一条sql语句

$mysqli->next_result();

$data = $mysqli->store_result();

if(!$data){

echo "第三条sql语句有误";

exit;

}

print_r($data->fetch_row());

===============

事务处理!!!

介绍几个函数

//关闭提交,默认的话是自动提交的

$mysqli->autocommit(false);

//手动提交。

$mysqli->commit();

//执行回滚

$mysqli->rollback();

这三个的详细可以查看php手册,这里不讲

在第一步操作之前首先先确定一下自己数据库的搜索引擎:修改成为InooDB

步骤: 进入phpmyadmin->选择数据库->数据表->操作->选择存储引擎

ac04d6137dd9e5ad1bb18faddf24cadc.png

1. 首先你必须关闭自动提交数据

2. 拼写sql语句,必须同时运行成功才进行数据库操作,否则不操作

3. 判断每一个sql语句是否执行成功

4. 根据判断的结果决定是执行回滚还是提交操作

附上源码:

header("Content-Type:text/html;Charset=utf-8");

//连接数据库

$mysqli = new mysqli('localhost','root','','test');

//处理连接错误

if(mysqli_connect_errno()){

echo "数据库连接失败,失败原因:".mysqli_connect_error();

exit();

}

//设置一下编码

$mysqli->set_charset('utf8');

//关闭提交,默认的话是自动提交的

$mysqli->autocommit(false);

//创建一个SQL语句,必须同时运行成功,不能出现一个成功,一个失败

$sql = "UPDATE zd_login SET level = level + 100 WHERE id = 1;";

$sql .="UPDATE zd_message SET price = price - 100 WHERE id = 1";

//判断第一条sql语句是否错误

if($mysqli->multi_query($sql)){

//判断影响的条数是否为1,

$success = $mysqli->affected_rows == 1 ? true : false;

//这个是可以省略的,这里是给我输出sql语句的错误信息,查找sql错误的时候有用

if($mysqli->errno){

echo $mysqli->error;

exit;

}

//下移指针,后马上进行了第二条sql语句的操作

$mysqli->next_result();

if($mysqli->errno){

echo $mysqli->error;

exit;

}

$success2 = $mysqli->affected_rows == 1 ? true :false;

//如果两条数据都成功的话

if($success&&$success2){

//手动提交。

$mysqli->commit();

echo "完美提交";

exit;

}else{

//执行回滚

$mysqli->rollback();

echo "所有操作归零";

exit;

}

}else{

echo "第一条sql语句错误";

exit;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值