mysqli的多条sql语句操作以及简单的事务处理~~~~~
2016-10-03 21:26
609 查看
首先介绍一下多条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语句决定
//查询数据 $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 "<br/>"; //将指针移动到下一条sql语句 $mysqli->next_result(); $data = $mysqli->store_result(); if(!$data){ echo "第二条sql语句有误"; exit; } print_r($data->fetch_row()); echo "<br/>"; //将指针移动到下一条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->选择数据库->数据表->操作->选择存储引擎
1. 首先你必须关闭自动提交数据
2. 拼写sql语句,必须同时运行成功才进行数据库操作,否则不操作
3. 判断每一个sql语句是否执行成功
4. 根据判断的结果决定是执行回滚还是提交操作
附上源码:
<?php 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; }
相关文章推荐
- mysql 事务处理,事务操作,JDBC中事务的使用,事务的sql语句,
- mysqli学习笔记 mysqli连接,multi_query多语句查询,SQL预处理stmt,事务处理
- 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用
- myeclipse链接mysql以及简单的sql语句操作,笔记
- 使用SQL语句对数据库以及数据库表的操作
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- SQL事务处理语句总结
- 关于DataSet事务处理以及SqlDataAdapter四种用法
- 用Python简单处理SQL语句绕过防注入
- SQL简单操作语句总结
- 一个jdbc的例子(包含sql语句的批处理,事务处理,数据绑定prepare)
- oracle事务处理多条sql语句
- 使用事务一次处理多条SQL语句
- iBatis 事务控制 与 两表操作将SQL语句写入单表
- DELPHI DATASNAP 入门操作(3)简单的主从表的简单更新【含简单事务处理】
- (C#)执行多条SQL语句,事务处理
- 一个jdbc的例子(包含sql语句的批处理,事务处理,数据绑定prepare,)
- [导入](简单事务)将指定数组中的N条SQL语句同步执行
- 使用Hibernate的session执行任意SQL语句以及整个事务