thinkphp中try catch的运用
public function doedit_set(){
$info=$this->_post("info");
$id=$this->_post("id");//dump($info);exit();
$user=DD("Order.OrderPackage")->deal_account($info['accounts']);
try{
$result=DD('Set.UserSet')->doedit_setinfo($id,$info,$user);
if($result){
$this->success("编辑成功",U("Userset/index"));
}
$this->error("编辑失败");
}catch(Exception $e){
$this->error($e->getMessage());
}
}
public function doedit_setinfo($id,$edit_info,$user_id)
{
if($id && $edit_info)
{
$res=M('user_set')->where(array('op_name'=>$edit_info['op_name'],'id'=>$id))->find();
if(!$res)
{
E("非法数据");
}
$md=new Model();
$md->startTrans();
$user_info=DD("User.AdminUser")->get_info();
$edit_info['start_time']=strtotime($edit_info['time1']);
$edit_info['end_time']=strtotime($edit_info['time2']);
foreach ($user_id as $key => $value) {
$op=M('user_set')->where(array('op_name'=>$edit_info['op_name'],'uid'=>$value))->find();
if($op['id']!=$id && $op )
{
E("此用户配置已存在");
}
if(M('user_set')->where('uid=%d',$value)->find())
{
$edit_info['uid']=$value;
$result=M('user_set')->where("id=%d",$id)->save($edit_info);
$content="id:".$id."修改前的|op_name:".$res['op_name']."|op_value:".$res['op_value']."|op_des:".$res['op_des']."|start_time:".$res['start_time']."|end_time:".$res['end_time']."|is_del:".$res['is_del']."|uid:".$res['uid']."|修改后:op_name".$edit_info['op_name']."|op_value".$edit_info['op_value']."|op_des:".$edit_info['op_des']."|start_time:".$edit_info['start_time']."|end_time:".$edit_info['end_time']."|uid:".$value;
$type="修改";
$obj="用户配置";
$log_result=DD("Logs.UserOp")->handle_logs($user_info['userId'],$user_info['account'] ,$content,$type,$obj);
}
else
{
$edit_info['uid']=$value;
$result=M('user_set')->add($edit_info);
$content="新增用户配置|id:".$result."|op_name:".$edit_info['op_name']."|op_value:".$edit_info['op_value']."|op_des:".$edit_info['op_des']."|start_time:".$edit_info['start_time']."|end_time:".$edit_info['end_time']."|uid:".$edit_info['uid']."|is_del:".$edit_info['is_del'];
$type="新增";
$obj="用户配置";
$log_result=DD("Logs.UserOp")->handle_logs($user_info['userId'],$user_info['account'] ,$content,$type,$obj);
}
}
if($result!==false && $log_result )
{
$md->commit();
return true;
}
else
{
$md->rollback();
return false;
}
}
else
{
E("参数错误");
}
}
thinkphp中try catch的运用的更多相关文章
- ThinkPHP中RBAC权限带菜单栏显示和详细权限操作
RBAC是什么,能解决什么难题? RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系 ...
- thinkphp中导入和使用阿里云OSSsdk
照做绝对行,在ThinkPHP中,第三方库都放在ThinkPHP/Library/Vendor/路径下. 1.下载OSS PHP SDK:https://help.aliyun.com/documen ...
- [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别
1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...
- 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)
Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...
- ThinkPHP中疑难笔记
不但要记住核心的东西, 还要记住 相关的 东西: 如php cli的版本是 5.6.14 bulit: sep 30, 2015 tp中, 通常说的系统就是框架; 项目就是 "应用程序&qu ...
- thinkphp中的setInc、setDec方法
thinkphp中setInc.setDec方法 可用于统计字段(通常是数字类型的字段)的更新,例如积分,等级,登陆次数等 必须配合连贯操作where一起使用 $User = M("User ...
- ThinkPHP中关于JS文件如何添加类似__PUBLIC__图片路径
在对html样式进行优化的时候,经常会用到Js/jquery进行一些跳转切换的样式,而我们常做的就是在Js/jquery代码中嵌url图片链接代码,以实现动态交互的页面效果. 如下图所示:
- ThinkPHP中initialize和construct的不同
ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者 ...
- c++中try catch的用法
c++中try catch的用法 标签: c++exception数据库sqlc 2011-10-24 21:49 45622人阅读 评论(3) 收藏 举报 分类: 一点小结(267) 版权声明: ...
随机推荐
- Linux系统档案与文件系统的压缩与打包
以下文章基于centos6.5 文章引自:http://www.jb51.net/LINUXjishu/105916.html 一.Linux下常见的压缩指令 在linux的环境中,压缩文件的扩展名大 ...
- 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
包括 Dockerfile 在内的任何脚本和程序都会出错.有错并不可怕,但必须有办法排查,所以本节讨论如何 debug Dockerfile. 先回顾一下通过 Dockerfile 构建镜像的过程: ...
- 如何实现在Windows上运行Linux程序,附示例代码
微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On Windows的原理, 而今天的这篇文章将会讲解如何自己 ...
- Unity非运行模式下实现动画播放/回退工具
实现效果 核心功能 支持选定模型(带Animator)在非运行模式下,播放/暂停/停止动作. 支持动作单帧前进,单帧回退(帧时间默认0.05f,可以代码设置). 支持滚动条拖拽,将动作调整到指定时间. ...
- Intellij Shortcuts
ctrl+shift+F : search in whole project ctrl+hover : check the field info in brief ctrl+Q : check the ...
- 《Android进阶》Sqlite的使用
之前认为Sqlite只能一次性创建多个表,其实不是 关键是对Sqlite的操作需要一些技巧: package com.example.mydemo; import android.content.Co ...
- Python LED
led.py from gpiozero import LED from time import sleep led = LED(17) while True: print "start c ...
- java虚拟机学习-JVM调优总结-垃圾回收面临的问题(8)
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断.垃圾回收程序收集计数为0的对象即可.但是这种方法无法解决循环引用.所以,后来实现的垃圾判断算法中,都是从程序运行 ...
- 如何打一个FatJar(uber-jar)
如何打一个FatJar(uber-jar) FatJar也就叫做UberJar,是一种可执行的Jar包(Executable Jar).FatJar和普通的jar不同在于它包含了依赖的jar包. 1. ...
- How and when: ridge regression with glmnet
@drsimonj here to show you how to conduct ridge regression (linear regression with L2 regularization ...