<?php@mysql_connect ( "localhost", "root", "root" ) or //选择数据库之前需要先连接数据库服务器
die ( "数据库服务器连接失败" );
@mysql_select_db ( "test" ) or //选择数据库mydb
die ( "数据库不存在或不可用" );
mysql_query("BEGIN");//开始一个事务
mysql_query("SET AUTOCOMMIT=0"); //设置事务不自动commit $insert="INSERT INTO test_user(uname,uphone,uaddr) VALUES ('aa1','1','aaa')";
mysql_query($insert);
//mysql_query("COMMIT");//非autocommit模式,必须手动执行COMMIT使操作生效
$insert="INSERT INTO test_user(uname,uphone,uaddr,) VALUES ('aa4','1','aaa')"; mysql_query($insert); mysql_query("ROLLBACK");//非autocommit模式,执行ROLLBACK使事务操作无效 ?>上面的程序中有两条insert,第二条执行会失败,因为字段中多了个逗号。
我设置的mysql_query("SET AUTOCOMMIT=0"); 为什么第一条insert仍然会插入到mysql数据库中呢?
die ( "数据库服务器连接失败" );
@mysql_select_db ( "test" ) or //选择数据库mydb
die ( "数据库不存在或不可用" );
mysql_query("BEGIN");//开始一个事务
mysql_query("SET AUTOCOMMIT=0"); //设置事务不自动commit $insert="INSERT INTO test_user(uname,uphone,uaddr) VALUES ('aa1','1','aaa')";
mysql_query($insert);
//mysql_query("COMMIT");//非autocommit模式,必须手动执行COMMIT使操作生效
$insert="INSERT INTO test_user(uname,uphone,uaddr,) VALUES ('aa4','1','aaa')"; mysql_query($insert); mysql_query("ROLLBACK");//非autocommit模式,执行ROLLBACK使事务操作无效 ?>上面的程序中有两条insert,第二条执行会失败,因为字段中多了个逗号。
我设置的mysql_query("SET AUTOCOMMIT=0"); 为什么第一条insert仍然会插入到mysql数据库中呢?
解决方案 »
- ★★写了一个php从数据库读数据的代码,近1000行!★★求高人指点精简代码方法???
- 类似自动跳转页面如何实现
- php 时间函数(新手提问)
- eclipsePHP studio运行时提示:启动期间发生了内部错误。请问怎么回事?
- 请问关于图片上传的问题
- 这两个语句有什么区别呢
- PHP不同页面间传递json的问题
- 不是说session_start()前面不能有输出吗?我输出值后初始化,也oK啊
- PHP的正则表达式和JavaScript的正则表达式的规则一样吗?
- 哪位懂php,最近有比较闲的网友能帮我个忙?
- php高手来帮忙,mysql输入后,怎么表格分列?
- php高手来帮忙,mysql输出表格问题,数据库中只有13条记录,我想输出5行5列共25条记录,差12条怎么补足?
query('START TRANSACTION');
die ( "数据库服务器连接失败" );
@mysql_select_db ( "test" ) or //选择数据库mydb
die ( "数据库不存在或不可用" );
mysql_query("BEGIN");//开始一个事务
mysql_query("SET AUTOCOMMIT=0"); //设置事务不自动commit $insert="INSERT INTO test_user(uname,uphone,uaddr) VALUES ('aa1','1','aaa')";
if(!mysql_query($insert)){
echo mysql_error();
mysql_query("ROLLBACK");
exit;
}
$insert="INSERT INTO test_user(uname,uphone,uaddr,) VALUES ('aa4','1','aaa')";
if(!mysql_query($insert)){
echo mysql_error();
mysql_query("ROLLBACK");
exit;
}//mysql_query("ROLLBACK");//非autocommit模式,执行ROLLBACK使事务操作无效 ?>
数据表引擎。InnoDb支持事务处理,myisam不支持事务处理。默认情况是myisam引擎。
这样也没用啊,第一条还是会成功插入的。 我的意思是第二条失败,未commit;为什么第一条会成功插入???
网上看了也是说MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!
create table ty2 (a varchar(10)) engine=myisam;
SHOW CREATE TABLE tablename;