我有一个脚本,可捕获推文并将其放入数据库中。我将在cronjob上运行脚本,然后从数据库中在我的网站上显示推文,以防止达到twitter API的限制。
所以我不想在我的数据库中有重复的tweet,我知道我可以使用’INSERT … ON DUPLICATE KEY UPDATE’来实现,但是我不太了解如何使用它。
我的数据库结构如下。
表格-哈希ID(auto_increment)鸣叫用户user_url
目前我要插入的SQL如下:
$tweet = $clean_content[0]; $user_url = $clean_uri[0]; $user = $clean_name[0]; $query='INSERT INTO hash (tweet, user, user_url) VALUES ("'.$tweet.'", "'.$user.'", "'.$user_url.'")'; mysql_query($query);
我如何正确地使用“ INSERT … ON DUPLICATE KEY UPDATE”仅在不存在时插入,而在不存在时进行更新?
谢谢
您需要在表上有一些UNIQUE KEY,如果user_url是tweer_url,则此大小应该合适(每条tweet都有唯一的url,id会更好)。
CREATE TABLE `hash` ( `user_url` ..., ..., UNIQUE KEY `user_url` (`user_url`) );
最好在您的情况下使用INSERT IGNORE
$query='INSERT IGNORE INTO hash (tweet, user, user_url) VALUES ("'.$tweet.'", "'.$user.'", "'.$user_url.'")';
当您需要更新现有行但只想插入一次时,ON DUPLICATE KEY很有用