我有一些插入,我只希望它们实际插入,如果那里没有相同的信息。
我只希望插件使用WHERE NOT EXISTS运行,是否有人能够帮助我将其添加到我的查询中?
查询:
$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");
非常感谢!
答案 0 :(得分:4)
使用IGNORE
关键字
INSERT IGNORE INTO surfed (user, site) VALUES('".$data['id']."', '".$id."')
如果您在user
- site
组合上有唯一的键约束,那么它通常会在重复项上生成错误并中止插入。在insert语句中使用ignore
将忽略错误,只是不插入任何内容。
如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告。 ...使用IGNORE时,仍未插入行,但未发出错误。
有关更多相关信息,请参阅here
答案 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然后插入别无所作为”。