php判断添加成功,ThinkPHP Add()函数添加记录判断记录已经存在

本文出自悠然品鉴小悠,转载请注明出处http://www.youranshare.com/blog/sid/105.html

之前在写网站的时候碰到一个问题,向数据库中插入记录的时候,对于unique类型的字段如果插入已经存在的记录值会出现错误: "SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry”,我想了一下之前做的工程,我的解决方案是先查询一下数据库,判断一下数据库中是否存在要插入的字段值,然后在执行Add方法将数据插入,这种方法虽然也可以,但是多了一次数据库的查询操作,不利于网站的优化;今天下午我再次遇到了这种问题,因为这次的数据库关系较为复杂,多一次数据判断就增加了服务器的压力,经过一番研究找到了一种较为方便的方法,这里就记录一下.

我用一个例子来说明一下:

首先创建一个数据表create table yz_test(

id int auto_increment,

user varchar(32) unique,

PRIMARY KEY (id)   )

这个数据表中 user字段是不能重复的,我们首先插入一个记录:public function Test(){

$Model = M("test");

$Data["user"]="user1";

$Model->add($Data);

}

我们第一次执行,没有问题,结果如下图:

7da02c0fcd2ba2a3b9e32a2893508052.png

我们再次执行,这个时候就会看到错误,原因就是user字段是unique的属性,如图所示我们的错误信息:

05a7171cf0493d896a7d1fbe1fb441ca.png

报了一个SQLSTATE[23000]的错误,注意错误代码是23000,我们可以根据这个错误代码做写文章,下面是我判断这种错误的方法:public function Test(){

$Model = M("test");

$Data["user"]="user1";

$Ret =-1;//操作的返回值

try{

$Ret = $Model->add($Data);//注意:如果Add有异常,$Ret的值不会被修改

}catch(\Exception $e){

if($e->getCode()==23000){

echo "插入的数据Unique导致的错误";

die();

}

}

echo "创建成功";

}

我用try catch捕获异常,提取错误代码,根据错误代码就知道了错误的愿意,从而就能一次判断数据是否能够插入了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值