避免在两次之间插入sql

时间:2015-10-28 18:09:55

标签: php mysql

我试图避免在数据库中插入多个sql。我的想法是再次插入之前至少等待5分钟。

使用

从上次插入中获取时间
$query ="SELECT fecha
FROM almacen
WHERE fecha > NOW() - INTERVAL 5 MINUTE
ORDER BY id DESC LIMIT 1"

$espera=mysqli_query($conexion, $query)

if (empty($espera)) { inserting code } else { close }

但是当它应该返回一个值时,查询不返回任何内容。我认为这可能是一个问题,因为日期是使用php date ( "j/n/Y h:i");

插入的

我应该更改时间格式吗?我该怎么用?

1 个答案:

答案 0 :(得分:0)

如果你想将你的行限制为每5分钟只有1个条目,我会:

创建一个名为insert_interval DATE的列,并在该列上创建唯一索引。然后尝试插入,将insert_interval的值设置为 无论5分钟的间隔,插入时间都在。

E.G。将日期标准化为5分钟间隔。

select now() - interval (mod(minute(now()),5)) minute - interval second(now()) second;

插入

insert into table(columns ..., insert_interval) values(
..., now() - interval mod(minute(now()),5) minute - interval second(now())
);

从小时开始,每隔5分钟只允许一行。所以从00:00:00到00:04:59有1行,依此类推。任何在该时间窗口中插入另一行的尝试都会导致重复的键错误,您可以捕获并采取适当的操作。

SQL Fiddle

取消注释最后一个插入,以查看构建架构上的错误。