我想把RSS的订阅结果添加到数据库。并且在每次联网更新时,接受的新的数据覆盖掉原来的数据。该RSS源每次都为20条。该如何操作?require_once ('conn.php');
mysql_select_db("my_db", $db);
mysql_query("REPLACE INTO rss (link, title, date, content) VALUES ('".$link."', '".$title."', '".$date."', '".$content."')");试过INSERT INTO,REPLACE INTO都一样,每次更新后数据库内容不是覆盖原来的,而是在数据表里往后面生成新的。
请教高手了。

解决方案 »

  1.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    1.table已经创建好了,要不我也不可能把数据给添加进去。现在只想要每次添加新的能覆盖原来的。
    2.代码我已经贴上了,我帖的是REPLACE INTO,不是insert into。
    3.结果已经描述清楚了,尝试过REPLACE INTO和insert into,其结果都是在table里生成新的条目,而不是覆盖原来的。
    4.这个我没说明白,我用的是MYSQL5.0.51a,Apache/2.2.13 (Win32) PHP/5.2.11数据库名table5,表名rss,字段名id,link,title,date,content。
    RSS订阅进来的项目已经被分解成四部分,分别赋予PHP函数为$link,$title,$date,$content现在要求:每天人工刷新一次页面,每次刷新页面的RSS项目被添加进数据表里,共10条,需要覆盖原先生成的10条项目。
      

  3.   


    你好,我不了解truncate table功能,刚查了一下教程,不是很明白。可否明示?谢谢。
      

  4.   

    truncate table  就是直接删除表内所有数据,并且不可恢复.
      

  5.   

    REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。针对你的问题,在表上面创建一个主键ID字段,从1-10,然后写入记录的时候,把ID也带进去,如REPLACE INSERT INTO TB(ID,NAME) VALUES(1,'1');REPLACE INSERT INTO TB(ID,NAME) VALUES(2,'2'),
    这样就能做到覆盖原来ID相同的记录了。
      

  6.   

    REPLACE INSERT INTO TB(ID,NAME) VALUES(1,'1');REPLACE INSERT INTO TB(ID,NAME) VALUES(2,'2')
    谢谢楼上的朋友,这是一个方法,但是这样的话,有10条新闻要更新,就要将ID分开写10遍 REPLACE INSERT INTO。
    先truncate table表内所有的数据,然后再重新写入,这样的话等于要执行2次MYSQL命令。
    还有没有更加省力简洁的方法呢?
      

  7.   

    又有一个新问题,捎带上:数据库插入的时间好像比RSS解析时间要快,导致页面刷新后,有时只有前6条RSS被保存进数据库,后面几条还没来得及保存,就已经断开了数据库链接,有什么方法解决吗?
    再次感谢。
      

  8.   

    OK,看样子只能先清空表内的内容,再填进新的了。弱弱的问一下:如何拖延insert时间?因为RSS从源头开始解析,需要几秒钟时间才能全部完成,但是数据库插入几乎是一瞬间的事情。有没有办法做到:得到一条信息插入一条,插满10条后break链接?
      

  9.   


    insert into a values(10);
    sleep 1;  # 休眠一秒
    insert into a values(11);