我想要做一个多语言的后台。后台添加语言后,把该语言保存到Language表,并在content表和category表里面各添加一列ti
以下是我的代码。 能正常运行。
但如果在表里面添加字段失败后,不会回滚。事务完全无效,求高手帮忙看看,谢谢咯。。
<?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');
}
?> 最佳答案