关于事务的处理!

浏览:1333 发布日期:2013/06/22 分类:求助交流

我想要做一个多语言的后台。后台添加语言后,把该语言保存到Language表,并在content表和category表里面各添加一列title_".$_POST['Language']的字段。
以下是我的代码。 能正常运行。
但如果在表里面添加字段失败后,不会回滚。事务完全无效,求高手帮忙看看,谢谢咯。。<?php
function setAddLanguage()
{ 
    $aReturn['info'] = '添加成功!';
    $aReturn['status'] = 1;
    $aReturn['data'] = 0;

         
    $db = new Model();
    $db->startTrans();
    if ($db -> table(C('DB_PREFIX')."Language") -> create())
    { 
        if(!$id = $db -> table(C('DB_PREFIX')."Language") -> add()){ 
            $aReturn['info'] = '添加失败!';
            $aReturn['status'] = 0;
    }
    }else
    {         
        $aReturn['info'] = $db->getError();
        $aReturn['status'] = 0;
    }
    if($aReturn['status'])
    {
        $sql = "ALTER TABLE ".C('DB_PREFIX')."content ADD title_".$_POST['Language']." VARCHAR(120) CHARACTER SET utf8;"; 
        $return = $db -> execute($sql);
        if($return === false )
        {
            $aReturn['info'] = "添加失败1";
            $aReturn['status'] = 0;
        }
    }
    if($aReturn['status'])
    {
        $sql = "ALTER TABLE ".C('DB_PREFIX')."category ADD title_".$_POST['Language']." VARCHAR(120) CHARACTER SET utf8;"; 
        $return = $db -> execute($sql);
        if($return === false)
        {
            $aReturn['info'] = "添加失败2";
            $aReturn['status'] = 0;
        }
    }
    if($aReturn['status'])
        $db->commit();
    else
        $db->rollback();
    
    $this->ajaxReturn($aReturn,'JSON');
}
?>
最佳答案
评论() 相关
后面还有条评论,点击查看>>