2015-10-28 67 views
2

我試圖避免在數據庫中插入多個sql。這個想法是在再次插入之前至少等待5分鐘。避免在時間之間插入sql插入

使用

$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");

我應該改變時間格式嗎?我應該使用什麼?

+0

您應該在存儲日期時使用默認的mysql日期語法。該字段也應該是mysql的日期類型之一。如果你希望它顯示另一種方式使用你的應用程序來做到這一點,而不是MySQL。 –

+0

我同意。如果想要在任何時候返回數據,可以使用函數來顯示它的方式。 –

+0

請提及列的確切數據類型以及插入值的PHP代碼行。 – trincot

回答

0

如果你想你的行限制爲每5分鐘,我只會1項:

創建一個名爲insert_interval DATE列,並創建在該列的唯一索引。然後,只要嘗試插入,無論插入時間所處的時間間隔爲5分鐘,都將insert_interval的值設置爲 。

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()) 
); 

只有1行每5分鐘間隔允許的起動的小時。所以從00:00:00 - 00:04:59 1行,依此類推。在該時間窗口中插入另一行的任何嘗試都會導致重複的鍵錯誤,以便您可以捕獲並採取適當的操作。

SQL Fiddle

取消對最後插入看到生成模式的錯誤。