如何在使用PHP插入之前检查重复的行

时间:2016-11-19 16:53:28

标签: php mysql sql

MYSQL (出勤)表:

$currentname = mysql_query("SELECT * FROM `entree` WHERE `user` IN(".implode(',',$AllFollows).") AND (`type` == '0' OR `type` == '1') ORDER BY id DESC LIMIT 0, $endtime;");    

要插入新行的PHP代码:

--------------------------------------------------------
| ID | EmployeeID | Name | TimeIn | TimeOut | Date     |
+----+------------+------+--------+---------+----------+
| 4  | 7          | Jack |   4    |    16   | 18-11-16 |
+----+------------+------+--------+---------+----------+
| 5  | 7          | Jack |   4    |    16   | 19-11-16 |
+----+------------+------+--------+---------+----------+
| 6  | 8          | Dave |   4    |    16   | 19-11-16 |
+----+------------+------+--------+---------+----------+

根据我的代码,用户可以为同一个员工记录相同的行(相同的出勤率),同时(重复)记录如下:

$SQL = "INSERT INTO attendance (ID, EmployeeID, Name, TimeIn, TimeOut, Date) VALUES ('$ID', '$EmployeeID', '$Name', '$TimeIn', '$TimeOut', '$Date');";

$Results = mysql_query($SQL);

if (!$Results){
echo "Error inserting data.";
}

如何确保我没有两次插入同一行?

如果您需要更多信息,请与我们联系。 感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您应该确保ID列是唯一的主键。然后使用ON DUPLICATE KEY UPDATE

SQL = "INSERT INTO attendance (ID, EmployeeID, Name, TimeIn, TimeOut, Date) VALUES ('$ID', '$EmployeeID', '$Name', '$TimeIn', '$TimeOut', '$Date') ON DUPLICATE KEY UPDATE (EmployeeID=VALUES(EmployeeID),Name=VALUES(Name);";

......等等......

答案 1 :(得分:0)

此处的方法是在应该唯一的列上设置sql unique constrain。您需要在数据库中执行此操作。然后在尝试插入新行时检查PHP代码中的异常。

答案 2 :(得分:0)

首先,您不应该使用mysql_query,因为它是deprecated。相反,您可以使用mysqli_query(例如)。

要回答您的问题,您的ID应该是唯一的(这是常见的事情)。一旦它是唯一的,您就可以检查您的插入是否成功(例如,使用if)。