如何检查在insert语句中是否存在使用implode和array()插入valuse的行

时间:2018-02-16 17:36:48

标签: mysql sql

所以,我有一个insert语句,用于通过implode()数组将数据插入到我的数据库中

$sql->prepared("INSERT INTO student(studentId,studentemail,phone,address)VALUE".implode(',', array());

问题是我每次运行脚本时都要从数据库中删除每一行,因为我的数组已经存储了数据库中的值加上我要插入的新值。所以,我想实现一个查询,如果存在,请不要插入。我不知道怎么玩它。

2 个答案:

答案 0 :(得分:1)

您可以使用insert on duplicate key。首先,您需要一个独特的索引。我在猜测:

create unique index unq_student_studentid on student(studentid);

insert into student (studentId, studentemail, phone, address)
     value . . .
     on duplicate key studentid = values(studentid);

这将忽略现有数据。如果您更喜欢较新的值,也可以使用相同的方法更新其他字段。

也就是说,每次插入数据似乎都是设计糟糕的应用程序。

答案 1 :(得分:1)

studentid上创建一个唯一索引(它可能应该已经是主键),然后使用INSERT IGNORE而不是普通INSERT。这只是跳过任何违反唯一约束的行。