我想扫描来自Arduino的RFID卡,它应该标记出勤每天一次,而不是每当它扫描卡片。
这是用于标记出勤的PHP代码:
public function getRFIDAttendanceApi(){
$rfid_uid = trim($_REQUEST['uid']);
$sql = "select count(*)as tot from tbl_users where rfid_uid='$rfid_uid'";
$data = $this->getData($sql);
if(count($data)>0 && $data[0]['tot']>0){
$sql = "insert into tbl_attendance set rfid_uid='$rfid_uid'";
$flag = $this->conn->query($sql);
if($flag){
echo "Attendance marked successfully!";
die;
} else {
echo "Sorry! Something unexpected happened!";
die;
}
} else {
echo "invalid access";die;
}这是mysql中用于重复标记的出勤表。
| att_id | rfid_uid | punch_timestamp | date | time |
+--------+----------+---------------------+------------+----------+
| 1 | 85988145 | 2018-04-21 10:48:51 | 2018-04-21 | 10:48:51 |
| 2 | 85988145 | 2018-04-21 10:48:52 | 2018-04-21 | 10:48:52 |一天怎么做一次?谢谢。
发布于 2018-04-21 06:56:32
只需在rfid_uid和date上的考勤表中添加一个唯一的对比。
ALTER TABLE tbl_attendance ADD CONSTRAINT UK_ATTENTANCE UNIQUE(rfid_uid, `date`);这样,一天内第一次成功地从卡上成功地打孔就会插入数据库中。
发布于 2018-04-21 06:51:42
如果您的主键(att_id,date),则不能在给定日期中插入多个给定日期的给定用户。然后,应用程序代码将处理用户每天尝试多次注册,显示错误消息的情况。
https://stackoverflow.com/questions/49953122
复制相似问题