replace防止数据表中重复数据插入

用PHP+MYSQL组合做学校给的一个项目时遇到了一点困难,需要导入学生们的学分成绩的时候发现用以往的insert into table(column_name) values (value) ;行不通,因为往往这个学生导入成绩时不只需要导入一次,或者是老师误操作那么很可能在数据库形成完全相同的两条记录。也就是说光用insert行不通。于是我将数据表的两个字段设为unique key索引。以下是我的数据表的结构:

create table student_users(student_num varchar(64),
                           student_name varchar(64),
                           science_mark double(2,1)              unsigned default 0,
                           culture_mark double(2,1) unsigned default 0,
                           bussine_mark double(2,1) unsigned default 0,
                           skill_mark double(2,1) unsigned default 0,
                           society_mark double(2,1) unsigned default 0,
                           sum_mark double(3,1) unsigned default 0,
                           year varchar(10),
                unique key dir(student_num,year));/*学生表保存学生基本信息*/

设置为unique key的dir确认了student_num,year两个字段的唯一值,这个时候再将insert into table(column_name) values (value) ;改成replace into table(column_name) values (value);replace into 关键字提供了更方便的功能,replace会先根据索引查询数据表里的数据,如果根据索引查询到一样的记录就更新(实际上是先删除掉记录,然后再执行insert插入新的记录),如果没有查询到就直接insert。就这样顺利的防止了数据表中有重复数据插入。

你可能感兴趣的:(PHP)