【问题标题】:How to pass inserting old values to mysql? It inserts the old lines too如何将插入旧值传递给mysql?它也插入旧行
【发布时间】:2013-06-17 08:55:01
【问题描述】:

我有一个 txt 文件,它每 5 分钟更新一次值,例如 rss。 我用 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 底部。我该怎么做?

【问题讨论】:

  • 你能发布一些代码吗?
  • 据我所知,你应该使用 UPDATE 语句
  • 在数据库中将该列标记为唯一

标签: php mysql curl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    来自manual:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多