我已经编写了一个PHP网络蜘蛛来从网站上获取新闻标题
当我得到标题时,我会将它们插入到mysql中
它第一次真的有用。
但是,工作将每小时运行一次
但后来,我不想插入重复的数据
因此,每次插入mysql时都需要检查
但我认为这不是一个好办法
有更好的想法吗?
答案 0 :(得分:1)
你可以做很多事情:
答案 1 :(得分:1)
您可以使用唯一的密钥自动决定哪些文章应归类为重复项。
采用以下示例:
CREATE TABLE IF NOT EXISTS news_items(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(150) NOT NULL,
create_datetime DATETIME NOT NULL,
description VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX UK_title_create_datetime (title, create_datetime)
)
ENGINE = INNODB;
此表在title和create_datetime上有唯一的键。 以下insert语句将匹配该键上的项,并忽略它们而不会引发错误或插入重复项。
INSERT IGNORE INTO news_items (title, create_datetime, description) VALUES ('My News Item', '2012-08-30 11:35:00', 'Something newsworthy happened');
您可以使用ON DUPLICATE KEY UPDATE
轻松更新所选字段以匹配行:
INSERT INTO news_items (title, create_datetime, description) VALUES ('My News Item', '2012-08-30 11:35:00', 'Something newsworthy happened')
ON DUPLICATE KEY UPDATE
description = VALUES(description);
查看MySQL的INSERT文档和INSERT ON DUPLICATE KEY UPDATE