Php 只允许在mysql表中每天插入一次

Php 只允许在mysql表中每天插入一次,php,mysql,Php,Mysql,我需要做一个web应用程序来收集来自不同服务的数据,我想限制每家商店每天只通过php表单和sql发布一次数据 我尝试了不同的东西,但它们仍然重复或我得到了错误 我的桌子是这样的: $sql=创建表CA id INT NOT NULL主键自动递增, jour DateTime不为空, 车间VARCHAR30不为空, ca_done VARCHAR30不为空, objectif VARCHAR70不为空, 目标上一年VARCHAR30不为空, 注释VARCHAR70不为空 ; 我试过的插页是这样的

我需要做一个web应用程序来收集来自不同服务的数据,我想限制每家商店每天只通过php表单和sql发布一次数据

我尝试了不同的东西,但它们仍然重复或我得到了错误

我的桌子是这样的:

$sql=创建表CA id INT NOT NULL主键自动递增, jour DateTime不为空, 车间VARCHAR30不为空, ca_done VARCHAR30不为空, objectif VARCHAR70不为空, 目标上一年VARCHAR30不为空, 注释VARCHAR70不为空 ; 我试过的插页是这样的

$sql = "INSERT INTO CA (jour,shop, ca_done, objectif, objectif_last_year, comments) VALUES ('$jour','$shop', '$ca_done', '$objectif', '$objectif_last_year', '$comments') " 
 ;
我希望商店能够每天只发布一次或更新其每日行,而不创建重复项。

将列添加到表insert_date,您将在其中存储插入日期

然后在该表上创建insert触发器,在该表中,您将检查特定商店当天是否已经插入了任何内容。基于此,您可以预先插入

或者更好的方法是,您可以在shop上创建唯一约束,插入日期。

如果您可以将jour列更改为日期数据类型,则可以添加唯一索引:

ALTER TABLE CA ADD UNIQUE INDEX (jour, shop);
如果没有,如果您使用的是MySQL 5.7,那么您可以添加一个虚拟列,其中包含jour列的date部分,并在索引中使用它

ALTER TABLE CA ADD COLUMN jourDate AS DATE(jour);
ALTER TABLE CA ADD UNIQUE INDEX (jourDate, shop);
谢谢大家!!谢谢你的帮助。 所以我添加了insert_date列。 正如@Barmar建议的那样,我刚刚添加了:

在ca shop上创建唯一索引uidx\U pid,插入\U日期
它正在工作

您能将jour列更改为日期类型而不是DATETIME吗?然后您可以在jour上创建一个唯一的多列索引,请使用准备好的语句进行插入。现在你很容易受到sql注入的攻击。不需要触发器,只需在shop上创建一个唯一的索引,插入\ u date。@Barmar好主意!谢谢谢啦谢谢你,它起作用了。我只是按照建议添加了:``在ca shop上创建唯一索引uidx\U pid,插入\U日期```