我要对两张表进行数据操作,都操作成功了,我才提交事务
代码如下:
$model = new Model();
$label_menu = M('label_menu','','LOST_CONN');
$model ->startTrans();//事务开启   
   if(is_array($label_menu -> where($condition) -> select())){//关联表不为空
         $lm = $model -> table(C('findfood').'ct_label_menu') ->where($condition) -> delete();//删除所有关联表的标签
      }else{
$lm = true;
echo $lm;
}
$label = $model -> table(C('LOST_CONN').'label') ->where($condition) -> delete();//删除所有标签
 if(!$lm || !$label){//删除不成功
  $model -> rollback();//事务回滚
  $return['status'] = 26;
$return['desc'] = '数据处理失败,删除失败';
$json = json_encode($return);
exit($json);
 }else{
  $model -> commit();//事务提交
$this -> display('labeldisplay');
}主要问题是这句话$label = $model -> table(C('LOST_CONN').'label') ->where($condition) -> delete();//删除所有标签
因为我本来项目环境是配置好'LOST_CONN'
 =>array(
        'DB_TYPE'   => 'mysql', // 数据库类型
        'DB_HOST'   => 'localhost', // 服务器地址
        'DB_NAME'   => 'findfood', // 数据库名
        'DB_USER'   => 'findfood', // 用户名
        'DB_PWD'    => 'y3M8ZGseGqX8mmxY', // 密码
        'DB_CHARSET' => 'UTF8',//设置数据库编码
    ),  所有我引用数据库的时候是 LOST_CONN,那我这个语句$model -> table(C('LOST_CONN').'label')  对不对?还是在$model = new Model('LOST_CONN')这样写?根据我上面的代码,操作后是删除不成功的,问题已经确定是$label = $model -> table(C('LOST_CONN').'label') ->where($condition) -> delete();//删除所有标签
这句话了。 求大臣  thinkphp框架,mysql数据库

解决方案 »

  1.   

    求大臣,$label = $model -> table(C('LOST_CONN').'label') ->where($condition) -> delete();
    这句话应该如何实现???
      

  2.   

    你打印出来看看,getlastsql
      

  3.   

    我查看不了后台的sql语句,只能知道是那句话执行失败了
      

  4.   

    现在已经解决了,问题出在 $model = new Model();  应该改成$model = new Model('','','LOST_CONN');然后table('tablename')就可以了,另外,mysql默认是不支持事务的,假如版本太低,需要手动设置数据库的type 设置为InnoDB
    想不到没人会,太失望了,还是靠自己解决,这里把解决办法说出来,希望对下一个新手有帮助。