当日期(日)改变时添加新行- 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"列为date格式(dd/mm/yyyy hh:mm), CURRENT_TIMESTAMP ON 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

如果你"插入"一个与现有记录具有相同日期的记录,你会得到一个更新。如果这是一个新的日期(例如:'明天'),你会得到一个新的记录。

这也有一个优点,那就是不像你最初的"fetch/check/update|insert"版本那样有缺陷。这样的过程留下了一些其他进程可能复制逻辑的可能性,并在您获取记录和执行插入/更新之间从您下面删除您的新记录。

如果我理解正确,您希望能够每天插入/更新数据两次(尽管次数不应该是重要的),并以每个唯一日期的单行数据结束?

如果在date列上创建UNIQUE索引并使用INSERT…ON查询的重复键更新语法。例如

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

如果您愿意,可以轻松地增加列的值,而不是重新分配它们。为此,查询的更新部分如下所示:UPDATE amount = amount + ....

您应该使用查询来检查是否已经有匹配的行,除非您绝对确定没有添加新游戏。

如果你的脚本在凌晨1点和下午1点运行,你只在凌晨1点创建一个新的行,在凌晨2点添加一个新的游戏(在外部xml,你的后端或两者)将导致一个错误。