如何在向mysql添加记录后添加唯一记录的结果

时间:2010-03-29 20:38:34

标签: php mysql

我是一个PHP菜鸟。

我有一个数据库,我将每周用CSV更新一次。到目前为止,我已经设法将文件上传到服务器,用PHP打开文件,然后在我的表中插入数据。

现在我想返回添加的唯一记录(在屏幕上或文件中)。我该怎么做?

2 个答案:

答案 0 :(得分:1)

是什么让他们与众不同?我们需要有关您的架构的更多信息。

无论如何,您可以轻松添加默认为date_added的{​​{1}}列。然后,您可以运行一个查询,对CURRENT_TIMESTAMP降序进行排序,以找出添加的内容。

关于仅提取唯一结果..好吧,你不应该重新插入一个唯一的行,所以如果你正确地避免这样做,那么date_added将只反映真正的新条目。

以下是代码示例:

首先,将date_added列添加到您的表格中:

date_added

ALTER TABLE your_table ADD COLUMN date_added TIMESTAMP DEFAULT CURRENT_TIMESTAMP 会自动使用当前日期,因此您无需更改现有DEFAULT CURRENT_TIMESTAMP代码的任何内容。

使用此列,您现在可以轻松检查为特定日期添加了哪些记录:

INSERT

-- Rows for March 29, 2010 SELECT DISTINCT * FROM your_table WHERE DATE(`date_added`) = '2010-03-29'; 将确保您只看到在该日期添加的唯一行。

这是另一个方便的查询,它将提取“今天的记录”:

DISTINCT

您唯一需要记住的是现有记录的日期为0,因为在插入时该列不存在。

答案 1 :(得分:0)

如果要插入带有时间戳的新行,则可以执行类似这样的操作

// Insert CSV into the DB with this timestamp
$todays_insert_time = time();

...

// Get unique rows from today
$unique_rows = mysql_query("SELECT DISTINCT `whatever_column_makes_the_row_unique` FROM `some_table` WHERE `insert_time`=" . $todays_insert_time);