起因:因为只是需要编写一个接口,无需使用框架,但是又要求对数据库的操作支持事务,所以直接使用mysql自带的事务进行处理
mysql自带对事务的支持,但是他默认是关闭的,需要我们手动打开,打开mysql的事务支持,只需要一下几步:
第一步,mysql表格类型默认是MyISAM,这个类型是不支持事务的,我们需要将他改成INNODB,语句如下:
ALTER TABLE `表名` ENGINE = INNODB;
--ENGINE 可以用type代替
-- 创建表时指定表类型的方法 CREATE TABLE `表名` ( `id` int(11) NOT NULL auto_increment, `tel` varchar(11) default NULL, ) ENGINE=MYISAM;
--也可以在建表时直接指定表类
第二步,打开事务
$db->query('begin'); // $db需要事先创建,我就不写
接着,我们找之前的平常的方式修改表中的结果,我们会发现,我们的sql虽然执行成功了,但是mysql表中的数据并没有改变,这是因为,我们还没有提交事务
第三步,提交事务
if($res){ // $res 为前面sql语句返回的执行结果
$db->query("COMMIT");
// 提交事务
}else{
$db->query("ROLLBACK")
// 数据回滚
}
$db->query("END");
// 结束事务操作
执行完这条语句后,我们再去查看表结构,如果sql语句没问题的话,表中的数据已经改变了,如果sql有问题,我们会发现不仅sql错误的那条语句没执行成功,sql正确的语句也没有执行成功,这就是mysql的事务了