(一)在插入数据前,对数据库中的数据进行检查,并返回插入信息

问题背景:使用的是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值