阻止特定值进入mySQL表(PhpMyAdmin)

阻止特定值进入mySQL表(PhpMyAdmin),mysql,phpmyadmin,Mysql,Phpmyadmin,我正在使用一个android应用程序,让我们的工程师在现场以外的时间和出勤软件上打卡。它的基本工作方式是工程师点击一个按钮来打卡,然后应用程序从手机上收集一些数据,比如他们的时间和位置,然后发送到内部托管服务器上的php脚本。然后,PHP脚本将这些值插入到phpMyAdmin MySql表中,然后时间和考勤软件将获取这些信息。 所有这部分工作正常,但是我一直在表中随机获取0值,我大约每天获取一次,这些0值停止了时间和考勤软件从表中获取数据,并阻塞了系统 起初,我认为可能是工程师没有输入ID,导

我正在使用一个android应用程序,让我们的工程师在现场以外的时间和出勤软件上打卡。它的基本工作方式是工程师点击一个按钮来打卡,然后应用程序从手机上收集一些数据,比如他们的时间和位置,然后发送到内部托管服务器上的php脚本。然后,PHP脚本将这些值插入到phpMyAdmin MySql表中,然后时间和考勤软件将获取这些信息。

所有这部分工作正常,但是我一直在表中随机获取0值,我大约每天获取一次,这些0值停止了时间和考勤软件从表中获取数据,并阻塞了系统
起初,我认为可能是工程师没有输入ID,导致php myadmin表自动输入0,但我向应用程序添加了代码,阻止0发送到脚本,并对此进行了测试,以确保其工作正常。


查看后,无论何时输入这些0值,都没有时间或其他信息,这可能使我相信这些值不是来自应用程序,可能是某种故障。

我想知道是否有办法将php表设置为每5分钟自动从表中删除0个值?或者是否有其他方法可以消除这些0,而不必经常检查表并删除它们?


非常感谢您的帮助:)

您可以使用触发器模拟值约束:

DELIMITER $
CREATE TRIGGER constraint_lng_lat
  BEFORE INSERT ON clockings FOR EACH ROW
  BEGIN
    IF NEW.longitude = 0 AND NEW.latitude = 0 THEN
      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot insert row: wrong value 0 for latitude and longitude.';
    END IF;
  END;
$
DELIMITER ;
更新时可能需要类似的触发器

一旦运行了这些行,请删除具有0的当前行


触发器中发出的通用异常信号还可以帮助您找出这些不需要的行出现的原因。

我知道这是一个很长的过程,您可能已经考虑过这一点,但现在开始。应用程序从何处获取长/纬度值?由于其中一些是“0”值,并且您说也没有拾取时间信息,可能是电话上的定位服务未打开或无法拾取GPS坐标?时间也来自手机上的GPS吗?