簡體   English   中英

日期(天)更改時添加新行-MySQL,PHP

[英]Add a new row when date (day) change - MySQL, PHP

我需要一些支持,因為我不像該委員會中的所有人那樣熟練於PHP和MySQL :)因此,請提前感謝。

我正在使用PHP腳本存儲來自外部已解析XML提要的數據。 該腳本每天兩次用CRON Job更新MySQL數據庫。 這是這段PHP腳本的摘要:

mysql_query("UPDATE my_table SET amount=$jackpot->amount WHERE gameId = '".$jackpot->gameId."'")
or die(mysql_error());

這將更新數據庫中的一個表和一行。 該表的結構如下(各列):

gameId | gameName | 金額| 貨幣| 日期

其中“日期”列為DATE格式(dd / mm / yyyy hh:mm),CURRENT_TIMESTAMP會在UPDATE CURRENT_TIMESTAMP上顯示。

我需要...是的,我每天需要更新此表兩次,但是我還需要在DATE更改時插入一個具有相同列的新行(每天,新的一天->新行)。

我在想類似的東西,用兩個詞(無編碼):

if today --> update rows
elseif date change (another day, so "tomorrow") --> INSERT new row with updated data (collected from the XML feed)

我怎樣才能做到這一點? 我是否要使用MySQL查詢檢查當前數據,然后通過PHP插入新行? 還是可以跳過一堆PHP行來跳過查詢?

抱歉,但是我有點困惑...任何幫助將不勝感激!

再次感謝大家!

我建議保持簡單:添加一個新的dupedate字段以僅存儲插入日期。 在上面放一個唯一的密鑰,這很簡單:

INSERT INTO (gameID, gameName, ammount, currency, date, dupedate) VALUES (...)
ON DUPLICATE KEY UPDATE amount=xxx

如果“插入”與現有記錄具有相同日期的記錄,則會得到更新。 如果是新日期(例如“明天”),則會獲得一條新記錄。

這還具有不像最初的“獲取/檢查/更新|插入”版本那樣靈活的優勢。 這樣的過程使其他進程可能會復制邏輯並在您獲取記錄的時間與執行插入/更新之間從您的身下竊取新記錄的可能性。

如果我理解正確,您希望能夠每天兩次插入/更新數據(盡管次數並不重要),並在每個唯一日期最后得到一行數據?

如果在date列上創建一個UNIQUE索引,並對查詢使用INSERT ... ON DUPLICATE KEY UPDATE語法,則可以在單個查詢中實現此目的。 例如

INSERT INTO my_table (amount, currency, date) VALUES (....)
ON DUPLICATE KEY UPDATE amount = '....';

您可以輕松地增加列的值,而不必根據需要重新分配它們。 為此,查詢的更新部分將類似於: UPDATE amount = amount + ....

您應該使用查詢來檢查是否已經有匹配的行,除非您完全確定沒有添加新游戲。

如果您的腳本在凌晨1點和下午1點運行,而您僅在凌晨1點創建一個新行,則在凌晨2點添加新游戲(在外部xml,您的后端或同時在這兩者中)將導致錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM