(一)在插入数据前,对数据库中的数据进行检查,并返回插入信息
来源:互联网 发布:翻倍牛股指标源码 编辑:程序博客网 时间:2024/06/05 05:46
问题背景:使用的是thinkPHP5.0框架下封装的的链式操作方式。
问题描述:接口要求,在传入参数后,首先检查class中是否存在相关班级,如果存在则在stu_class表中插入一条申请信息,如果不存在就不插入,并返回插入成功与否的有关信息。
数据库字段:
stu_class
class:
思路过程:
(1)对于检查数据是否存在,我另外写了一个相关的查询使用读入的参数,在表格中搜索,并统计数量,因为class表项中不存在重复的数据,所以count只会返回0(表示没有数据),1表示这个数据是存在的,然后写了一个判断语句,之后在表中有相关数据时,才会插入数据
(2)需求要求返回插入是否成功的有关信息,因为这个stu_class表也是不允许重复插入,所以有时会插入失败,在面对这个问题的时候,我首先希望使用mysql自带的返回值来解决这个问题,因为在插入的时候会返回一个变动的条目信息,这里这个接口调用一次之后插入一次信息,如果插入成功应该就会返回1,插入失败就应该返回0,但是实际操作中出现了一个问题,就是在插入失败之后thinkPHP会直接报错,并不会返回0。于是我就想着使用try catch捕捉这条错误的信息,但是失败了,后来查阅官方文档我发现原来是因为在thinkPHP中catch中应该是\Exception $e,而不是Exception $e,正是这点差异使得我反复调试失败,修改过来之后,代码就跑通了。
代码实现:
public function handle($stuid='',$claid=''){ $data0 = Db::table('class') ->where('id',$claid) ->count(); if($data0){ try { $data1 = ['stuid' => $stuid, 'claid' => $claid,'state'=>'0']; $request=Db::table('stu_class')->insert($data1); //$request = Db::name('cen_class')->getLastInsID(); return 1; } catch (\Exception $e) { return 0; } }else{ return 2; } }代码解释:class表中无相关数据时,会返回2;插入失败会返回0,插入成功会返回1。
阅读全文
0 0
- (一)在插入数据前,对数据库中的数据进行检查,并返回插入信息
- 泛型+反射 实现泛型向数据库插入信息类 并返回插入数据的Id值
- 数据库插入数据返回主键
- 通过jdbc向数据库中插入数据,并对密码进行加密
- 创建数据库并插入数据
- 创建数据库并插入数据
- 插入一条数据并返回ID
- 在Java中对mysql数据库插入datetime类型数据
- 对链表数据进行插入排序
- 插入数据返回id
- GridView根据数据库返回的值,在显示到界面前对相关数据进行处理后显示
- 将excel数据解析并插入数据库
- C#连接数据库并插入数据
- C#连接数据库并插入数据(insert)
- 使用SQLiteHelper创建数据库并插入数据
- 使用SQLiteHelper创建数据库并插入数据
- oracle跨数据库查询数据并插入
- vc++连接mysql数据库,并对数据库中的表进行查询、插入、删除、更新等
- session与cookie的区别?cookies,sessionStorage 和localStorage的区别?
- PHP消息队列
- HTML5+CSS+JavaScript仿百度登录之后的静态首页
- Maven基础-默认中央仓库
- C++多线程
- (一)在插入数据前,对数据库中的数据进行检查,并返回插入信息
- URI和URL的区别
- 踢开Android 开发中的绊脚石
- 数据可视化之美:经典案例与实践解析
- canvas填充和描边介绍
- 那些年我们用过的流计算框架
- android面试-JavaConcurrent(Java并发)(深信服、美图)
- sql获取各个逗号前的值
- gulp