PHP如何判断输入数据库的字段值不能重复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何判断输入数据库的字段值不能重复相关的知识,希望对你有一定的参考价值。

表单里填写的值不能与表中的值相同,如果相同则不执行INSERT语句

    将关于mysql函数 全部改成mssql前缀

    $sqlwhere = "select * from $dbzh where ……";//具体哪些字段重复,在where后面加上条件即可
    $result = mssql_query($sqlwhere);
    $num = mssql_num_rows($result); 
    if ($num  == 0)
        //新增操作

    只要查询它的ID是否存在,如果存在的话,就重复了,如果不存在的话,就说明没重复

    mssql_get_last_message 函数是做什么用的

参考技术A 楼上几位说的都差不多了,我总结补充一下哈。

1.如果一个表的某个字段(或几个字段的组合)禁止重复数据,请将其定义为唯一键,从根本上保证数据的唯一性。
2.插入之前使用select语句查询一下,唯一键也是一种索引,所以查询速度很快,消耗几乎可以忽略。
3.为什么不推荐直接insert数据:insert失败可能是多种原因引起的,你不能因为插入失败就告诉前端页面xxx不允许重复,这是很糟糕的用户体验。

补充,请注意insert之前的唯一性检查和update之前的唯一性检查不同,update之前的检查请记得要排除当前行,例如select count(*) from user where id <> current_user_id and email = 'newEmail'追问

非常感谢你的回答
我现在的情况是一个表单提交时除了一个主表需添加数据,另还有两个子表也需同时加数据,现在就是判断主表的一个字段不能有重复值,数据库里已设定了唯一健,主要是页面程序的编写,如果主表里这个字段有重复值不能填写,那同时两个子表的值也不执行添加

追答

无所谓啊。以下是伪码
$count = $db->query('select count(*) from table where value = 'value');
if (empty($count))
insert into main table,

insert into other tables....

else

不就好了

本回答被提问者和网友采纳
参考技术B 最简单的就是把数据库中这个字段值设置为UNIQUE属性,输入的时候如果重复就会直接返回错误。
麻烦点的就是先把输入的值作为条件来查询,如果返回有值就是有重复,没有返回值就是没有重复,再输入就好。
参考技术C 你在设计数据表结构时,要把不能重复的字段设成UNIQUE,从根源上杜绝重复的可能性;
程序这一块,可以事先SELECT判断一下,或者在执行INSERT后判断一下均可,因为某字段是UNIQUE的,如果字段值有重复是无法写入数据库的
参考技术D 这个文件很简单,比如是user表,字段有:id 主键,自动增长,username用户名,password密码
那么你注册用户不允许存在两个相同的用户名的话,在插入数据之前,先进行查找。比如你获得了用户名$username="admin",那么先查找select count(username) from user where username = "admin",如果查找的结果大于0,则说明这个用户已经存在了,那么就不插入啊,很简单的道理

php如何判断一个字段是不是存在

我想做一个程序,运行时候判断表A里面是否存在字段B,如果不存在就建立一个字段B。 不知道怎么写
(我说的不是字段里的数据,是这个字段名称)
没钱悬赏,各位行行好,帮个忙吧

如果数据库是用mysql的话

在数据库information_schema
表COLUMNS
记录有所有表字段名称的信息。

例如
SELECT * FROM `COLUMNS` WHERE TABLE_NAME='表A' AND COLUMN_NAME='字段B'
参考技术A isset() 判断变量是否存在;
empty() 判断变量是否 假,包括 0,false,null 和 空字符串本回答被提问者采纳

以上是关于PHP如何判断输入数据库的字段值不能重复的主要内容,如果未能解决你的问题,请参考以下文章

php如何判断一个字段是不是存在

如何使用ajax将从jquery for循环创建的输入值发送到php [重复]

php随机生成数据库中不存在、不重复数字

mysql主键对应的值不能重复

php如何防止程序重复执行

decimal型,如何存入空值 - 技术问答