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.";
}
如何确保我没有两次插入同一行?
如果您需要更多信息,请与我们联系。 感谢您的帮助。
答案 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
)。