1

可能重复:
如何在 MySQL 中“如果不存在则插入”?

我有一些插入,如果那里没有相同的信息,我只希望它们实际插入。

我只希望插入使用 WHERE NOT EXISTS 运行,有人可以帮助我将其添加到我的查询中吗?

查询:

$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");

非常感谢!

4

3 回答 3

4

使用IGNORE关键字

INSERT IGNORE INTO surfed (user, site) VALUES('".$data['id']."', '".$id."')

如果您对user-site组合有唯一键约束,那么它通常会在重复项上生成错误并中止插入。ignore在插入语句中使用将忽略错误并且不插入任何内容。

如果使用 IGNORE 关键字,则执行 INSERT 语句时发生的错误将被视为警告。... 使用 IGNORE,仍然没有插入该行,但没有发出错误。

有关它的更多信息,请参见此处

SQLFiddle 示例

于 2012-10-29T16:17:29.623 回答
0

您应该可以使用 mysql_num_rows。如果返回值 0,则表中没有任何内容与您要插入的内容相匹配。(不存在的地方)。所以做一些类似“如果mysql_num_rows = 0然后插入其他什么都不做”的东西。

于 2012-10-29T16:32:57.057 回答
0

首先,您的两列需要是一个组合键,然后您可以INSERT IGNORE按照 juergen d 的概述使用或使用

ON DUPLICATE KEY UPDATE user=user

在此处查看类似的问题: INSERT ... ON DUPLICATE KEY (do nothing)

对于只有站点列的修改问题,请确保站点列是唯一键或主键,然后使用

$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."') ON DUPLICATE KEY UPDATE site=site");
于 2012-10-29T16:24:52.367 回答