可能重复:
如何在 MySQL 中“如果不存在则插入”?
我有一些插入,如果那里没有相同的信息,我只希望它们实际插入。
我只希望插入使用 WHERE NOT EXISTS 运行,有人可以帮助我将其添加到我的查询中吗?
查询:
$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");
非常感谢!
可能重复:
如何在 MySQL 中“如果不存在则插入”?
我有一些插入,如果那里没有相同的信息,我只希望它们实际插入。
我只希望插入使用 WHERE NOT EXISTS 运行,有人可以帮助我将其添加到我的查询中吗?
查询:
$db->Query("INSERT INTO `surfed` (site) VALUES('".$id."')");
非常感谢!
使用IGNORE
关键字
INSERT IGNORE INTO surfed (user, site) VALUES('".$data['id']."', '".$id."')
如果您对user
-site
组合有唯一键约束,那么它通常会在重复项上生成错误并中止插入。ignore
在插入语句中使用将忽略错误并且不插入任何内容。
如果使用 IGNORE 关键字,则执行 INSERT 语句时发生的错误将被视为警告。... 使用 IGNORE,仍然没有插入该行,但没有发出错误。
有关它的更多信息,请参见此处
您应该可以使用 mysql_num_rows。如果返回值 0,则表中没有任何内容与您要插入的内容相匹配。(不存在的地方)。所以做一些类似“如果mysql_num_rows = 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");