哪里错了呢,为什么转账失败QUEEN还是加两百

来源:3-5 MySQLi中事务处理

Danmomo

2015-07-22 01:05

<?php
error_reporting(E_ALL^E_NOTICE);
header('content-type:text/html;charset=utf-8');
$mysqli=new mysqli('localhost', 'root', 'root', 'info');
if($mysqli->connect_errno){
	die($mysqli->connect_error);
}
$mysqli->set_charset('utf8');
$mysqli->autocommit(FALSE);//关闭自动提交

$sql="UPDATE1 account SET money=money-200 WHERE username='king';";
$res=$mysqli->query($sql);
$res_affect=$mysqli->affected_rows;

$sql1='UPDATE account SET money=money+200 WHERE username="queen";';
$res1=$mysqli->query($sql1);
$res1_affect=$mysqli->affected_rows;

if($res && $res_affect>0 && $res1 && $res1_affect>0){
	$mysqli->commit();
	echo '转账成功<br/>';
	$mysqli->autocommit(TRUE);
}else{
	$mysqli->rollback();
	echo '转账失败<br/>';
}
$mysqli->close();


写回答 关注

2回答

  • King
    2015-08-04 17:49:01

    事务只有INNODB引擎支持,你看看你的引擎

    ^-^...

  • Danmomo
    2015-07-22 01:51:59

    commit 跟服务器有关吗 我是用PHPstudy的

    张的高

    修改数据库的默认引擎:default-storage-engine=INNODB 或者建表的时候 CREATE TABLE tablename (id,username,money) ENGINE = INNODB 这样就可以实现事物处理了 当然事物是否处理与服务器无关

    2015-08-24 11:27:15

    共 1 条回复 >

Duang~MySQLi扩展库来袭

本教程从面向对象和面向过程两个方面为你开启MySQLi学习之旅

28643 学习 · 181 问题

查看课程

相似问题