php+mysqli 事物处理 事物就是如果两条或多条数据只要有一条SQL语句错误,那么已经执行成功的执行回滚操作,把已经生效的SQL语句回滚为原来的值 比如A原来有100元,B也有100元,A向B转账50元,那么就要执行两条SQL语句,一个是A的余额要减50,B的余额要加50, 如果第一条语句成功了,但是第二条语句失败了,那么就会丢失数据了,这个时候就需要事务处理了,有一条错误语句,那么已经执行成功的语句都要回滚,返回失败!
直接看代码吧
//SQL连接
$mysqli = new mysqli('127.0.0.1','root','root','test');//实例化Mysqli对象,参数分别是:数据库主机地址,用户名,密码,数据库名
if (mysqli_connect_errno()) {//判断数据库连接是否错误
die(mysqli_connect_error());
}
$mysqli->set_charset('utf8');//设置数据库字符集
$mysqli->autocommit(false); // 开始事务
$sql ='...';
$sql .='...';
if($mysqli->multi_query($sql)){//multi_query() 可以同时执行多条SQL语句
$status_1= $mysqli->affected_rows==1?true:false;//查看第一条SQL语句执行状态
$mysqli->next_result()//下移指针来查看第二条SQL语句状态
$ststus__2 = $mysqli->affected_rows==1?true:false;//第二条SQL语句状态
if($status_1 && $_status_2){//判断两条SQL语句状态,如果都为true,则提交事务,否则回滚
$mysqli->commit();//提交事务
}else{
$mysqli->rollback();//回滚
}
}
$mysqli->autocommit(true);//关闭事务
$mysqli->close();//关闭SQL连接
本文由 Alone88 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: Mar 31, 2019 at 06:35 pm