1

我有一个 txt 文件,它像 rss 一样每 5 分钟更新一次值。我用 curl 记录值,它会自动插入到 Mysql 中。

但有一个问题。在 txt 文件中,当我记录新行时,它会用旧行插入它们。

要插入的 PHP 行。

$addvalue = "INSERT INTO city SET cities='$cities', date='$date'";
mysql_query($addvalue)

Mysql 行

INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');

有了新线,它会再次保存旧线

INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');
INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');
INSERT INTO `city` VALUES (5, 'MOSCOW', '2013-06-20 19:15:33');
INSERT INTO `city` VALUES (6, 'PARIS', '2013-06-20 12:18:32');
INSERT INTO `city` VALUES (7, 'NEW YORK', '2013-06-20 21:17:25');
INSERT INTO `city` VALUES (8, 'OSLO', '2013-06-20 07:17:44');

我试着像那样拯救他们

INSERT INTO `city` VALUES (1, 'ISTANBUL', '2013-06-19 18:09:39');
INSERT INTO `city` VALUES (2, 'IZMIR', '2013-06-19 15:06:35');
INSERT INTO `city` VALUES (3, 'LONDON', '2013-06-19 11:17:15');
INSERT INTO `city` VALUES (4, 'BERLIN', '2013-06-18 06:12:21');
INSERT INTO `city` VALUES (5, 'MOSCOW', '2013-06-20 19:15:33');
INSERT INTO `city` VALUES (6, 'PARIS', '2013-06-20 12:18:32');
INSERT INTO `city` VALUES (7, 'NEW YORK', '2013-06-20 21:17:25');
INSERT INTO `city` VALUES (8, 'OSLO', '2013-06-20 07:17:44');

我不想在 txt 中保存相同的旧行。当新行出现时,它应该添加到旧行的 mysql 底部。我该怎么做?

4

3 回答 3

1

您应该使用 REPLACE 语句而不是 INSERT :

REPLACE 的工作方式与 INSERT 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行。

http://dev.mysql.com/doc/refman/5.5/en/replace.html

于 2013-06-20T13:24:51.643 回答
1

如果在要插入值时将城市名称作为唯一索引,则会显示错误。因此,您将避免重复条目。

手册:

UNIQUE 索引创建一个约束,使得索引中的所有值都必须是不同的。如果您尝试使用与现有行匹配的键值添加新行,则会发生错误。此约束不适用于 NULL 值,但 BDB 存储引擎除外。对于其他引擎,UNIQUE 索引允许包含 NULL 的列有多个 NULL 值。如果为 UNIQUE 索引中的列指定前缀值,则列值在前缀中必须是唯一的。

于 2013-06-20T13:32:45.697 回答
1

使城市唯一,并检查mysql的“重复密钥更新”语句。

于 2013-06-20T13:34:33.050 回答