素材牛VIP会员
MySQL数据库字段如果设置唯一约束 数据重复时怎样获取相应的报错信息
 麦***气  分类:PHP代码  人气:925  回帖:6  发布于6年前 收藏

1.请问MySQL数据库字段如果设置unique或不not null等约束条件,如果插入数据不符合约束条件,php怎样获取相应的报错信息?例如我想让用户名唯一,注册保存时数据库中已经存在相同的用户名,数据库会报错吗?,报错的话怎样获取相应的错误信息?
2.如果要限制用户名唯一,是通过数据库中字段约束控制好,还是在代码中控制比较合适?
抱歉,是我表达不清,我是php初学者,目前接触laravel框架,知道框架可以通过$request进行表单过滤,只是好奇为什么数据库具有字段唯一的功能,有时候还要用框架的功能去判断字段是否唯一?

 标签:mysqlphp

讨论这个帖子(6)垃圾回帖将一律封号处理……

Lv2 入门
麦***气 JAVA开发工程师 6年前#1

mysql会报key重复

Lv4 码徒
间***p JAVA开发工程师 6年前#2

如果你用的事TP框架做的话,可以查看手册的自动验证。在model文件中写好验证规则后,例:在你添加管理员时,在使用create方法创建数据对象的时候自动调用,你可以做个判断就可以了。比如用户名已存在会报错相应的信息

Lv2 入门
12***om JAVA开发工程师 6年前#3

1、你用的什么框架?框架封装的db类都会给留异常方法,调用他的方法就可以接收到sql的错误
2、不太明白你的不能重复的约束是什么意思,就算是sql建立了索引,程序也应该进行判断。

Lv7 码师
封***榜 职业无 6年前#4

可以用异常捕获。

Lv5 码农
陌***3 PHP开发工程师 6年前#5

1.可以用异常捕获

try{
            //对数据库的操作
    }catch(PDOException $e){
            
            $e->getMessage(); //获取异常的信息
    }
   

2.使用Validate的unqiue去判断

    $input = $request->all();
            $rules = [
                'title' => 'required|unique:表名',
            ];

            $attrs = [
                'title' => '文章标题',
    
            ];
            $validator = Validator::make($input, $rules, [], $attrs);
            if ($validator->fails()) {
                $mess = $validator->errors()->getMessages();
                 //会自动帮你捕获信息
            }
Lv4 码徒
錯***來 JS工程师 6年前#6

一般的变成语言都有对应的持久层框架,就拿java来说,spring中jdbcTemplate如果出现你说的这种情况,则会报异常。你只需捕获异常即可。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取