MySQL - 插入不存在的地方

时间:2012-10-29 16:15:32

标签: php mysql sql

  

可能重复:
  How to ‘insert if not exists’ in MySQL?

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

我只希望插件使用WHERE NOT EXISTS运行,是否有人能够帮助我将其添加到我的查询中?

查询:

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

非常感谢!

3 个答案:

答案 0 :(得分:4)

使用IGNORE关键字

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

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

  

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

有关更多相关信息,请参阅here

SQLFiddle example

答案 1 :(得分:0)

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

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");

答案 2 :(得分:0)

你应该可以使用mysql_num_rows。如果返回值0,则表中没有任何内容与您要插入的内容相匹配。 (不存在)。 所以做一些像“如果mysql_num_rows = 0然后插入别无所作为”。