我们来测试一下
1.新建一张userdetail表,代表是用户详细信息表
2.做一个用户登录的事务
第一条sql:insert into users(username,userpwd,useremail,sex) values(‘zhangs’,’zhangs@com.cn’,’1’);
第二条sql:
mysql中获取自增的id:select LAST_INSERT_ID() into @newuserid;
第三条sql:
insert into usersdetail(userid,userturename,userqq) values(@newuserid,’张三’,”)
第四条sql:
select @newuserid;
functions.inc
function execForTrac($sqllist,$resulttype) //用事务 来执行
{
//$sqllist 参数 是sql数组
$type=array("none","string","array","int"); //返回类型
if(!in_array($resulttype,$type)) return false;
if(count($sqllist)==0) return false;
$this->_db->BeginTrans(); //开启事务
$sqlindex=0;
$ret=false;
foreach($sqllist as $sql)
{
if($sqlindex==(count($sqllist)-1)) //最后一个语句 需要根据返回类型来做不同的处理
{
if($resulttype=="none")
{
$this->_db->Execute($sql);
}
else if($resulttype=="array")
{
$ret=$this->execForArray($sql);
}
else if($resulttype=="int" || $resulttype=="string")
{
$ret=$this->execForOne($sql);
}
else
{
$ret=$this->execForArray($sql);
}
}
else
$this->_db->Execute($sql);
$sqlindex++;
}
if($ret){
$this->_db->CommitTrans();
}else{
$this->_db->RollbackTrans();
}
return $ret;
}
index.inc测试代码部分
$db = load_db();
$sql[] = "insert into onethink_ucenter_member(username,password,email) values('laikedoud','0931e5bac9c74449eb14fcdbe4223d3c','laike13545@qq.com')";
$sql[] = 'select LAST_INSERT_ID() into @newuserid';
$sql[] ="insert into onethink_member(last_login_time,nickname,qq) values(@newuserid,'laikedou','924462390')";
$sql[] = 'select @newuserid';
$userid =$db->execForTrac($sql,'int');
exit('当前用户ID是:'.$userid);