喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
     
标题: [问题] 用ADODB实现事务,即两条SELECT语句要么都做要么都不做  
 
annanyjqa
新手上路
Rank: 1



UID 118841
精华 0
积分 3
帖子 1
金钱 3 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2008-4-15
状态 离线
[广告]: q m
用ADODB实现事务,即两条SELECT语句要么都做要么都不做

Sample TextSample TextSample Text

<?php
$db 
NewADOConnection('mysql'); //创建一个ADODB连接对象 
$mysql_conn $db->Connect("localhost","root","""anna");

$db->BeginTrans();
$ok $db->Execute("update user set user_name= '098'where id=3")or die("Error in query:".$db->ErrorMsg());
if(
$ok
$ok=$db->Execute("update user set user_name= where id=2")or die("Error in query:".$db->ErrorMsg());
if (
$ok) {$db->CommitTrans();}
else {
$db->RollbackTrans(); }
?>
结果却是第一条语句成功了,第二条没有成功。
但是同样我用MYSQL自带的函数却可以实现我要的功能,代码如下:

<?php
mysql_query
("SET AUTOCOMMIT=0");
$ok1 $db->Execute("update user set user_name= '098'where id=3")or die("Error in query:".$db->ErrorMsg());
$ok2=$db->Execute("update user set user_name= where id=2")or die("Error in query:".$db->ErrorMsg());
if (
$ok1 && $ok2 ){ mysql_query("COMMIT");}
else  {
mysql_query("ROLLBACK");}
?>
为什么啊?急救!!谢谢
2008-4-15 11:30 AM#1
查看资料  发短消息  顶部
 
小桑
新手上路
Rank: 1



UID 118855
精华 0
积分 5
帖子 3
金钱 5 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2008-4-15
状态 离线
[推荐阅读] 10G PHP空间只需200元,可开设5个独立网站
改为这样试试
$ok=$db->Execute("update user set user_name= ' ' where id=2")or die("Error in query:".$db->ErrorMsg());
2008-4-15 04:24 PM#2
查看资料  发短消息  顶部
 
xieaotian (老老仙)
版主
Rank: 7Rank: 7Rank: 7


UID 82205
精华 1
积分 1308
帖子 1542
金钱 1308 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-10-26
来自 老老神仙部落
状态 在线
[推荐阅读] 麻烦高手进来看下。谢谢谢谢谢谢谢谢~@
自己手动做事物啊,很难.
我以前自己写过,但是时间有限没有深入尝试.




http://www.okpython.com
让中国的python发展的更快。
2008-4-17 11:06 AM#3
查看资料  访问主页  Blog  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.041947 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP