使用ON DUPLICATE KEY UPDATE的更新表中的错误 [英] error in update table using ON DUPLICATE KEY UPDATE

查看:781
本文介绍了使用ON DUPLICATE KEY UPDATE的更新表中的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在读取rss feed并将其存储在数据库中,我的要求是如果链接字段相同,则仅在数据库中更新标题和描述.
我正在使用ON DUPLICATE KEY UPDATE,但输入查询后,它仅在数据库中插入单个数据,但失败并显示错误

I'm reading and store rss feed in my database ,my requirement is if link field is same then update title and description only in database.
I'm using ON DUPLICATE KEY UPDATE but after entered query.its insert only a single data in database and failed and show a error

我的代码是

 <?php
      include_once 'db.php';

         $homepage = file_get_contents('http://rss.cnn.com/rss/edition_us.rss');

          $movies = new SimpleXMLElement($homepage);
             foreach($movies->channel->item as $opt){
            $title= $opt->title;
            $tittle=mysql_real_escape_string($title);
            $link=$opt->link;
            $links=mysql_real_escape_string($link);
            $des=$opt->description;

        $dess=mysql_real_escape_string($des);

       "INSERT INTO store_feed (title, link, description) VALUES   ('$tittle','$links','$dess')";



       $sql="ON DUPLICATE KEY UPDATE title= '$tittle',description='$dess'";
      $result=mysql_query($sql) or die( mysql_error() );
        }

      ?>

,表结构为:-

 CREATE TABLE `test_om`.`store_feed` (
   `id` INT NOT NULL AUTO_INCREMENT ,
     `title` VARCHAR( 200 ) NOT NULL ,
     `link` VARCHAR( 200 ) NOT NULL ,
      `description` VARCHAR( 500 ) NOT NULL ,
    `feedburner` VARCHAR( 200 ) NOT NULL ,
    PRIMARY KEY ( `id` ) ,
     UNIQUE (
     UNIQUE KEY `link` (`link`)
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

,错误是 关键字链接"的重复条目"http://rss.cnn.com/~r/rss/edition_us/~3/Wl1V4JsNqDU/index.html"

and error is Duplicate entry 'http://rss.cnn.com/~r/rss/edition_us/~3/Wl1V4JsNqDU/index.html' for key 'link'

我对查询做了一些更改,将其简短化.

I have done some changes in my query ,short it.

     <?php
     include_once 'db.php';//config file

     $homepage = file_get_contents('http://rss.cnn.com/rss/edition_us.rss');//link of rss feed page
      $movies = new SimpleXMLElement($homepage);

      foreach($movies->channel->item as $opt){ 

      $sql="INSERT INTO store_feed SET `title` = '".mysql_real_escape_string($opt- >title)."',
     `link`='".mysql_real_escape_string($opt->link)."',
      `description`='".mysql_real_escape_string($opt->description)."'"

     ."ON DUPLICATE KEY UPDATE `title`='".mysql_real_escape_string($opt->title).
      "',`description`='".mysql_real_escape_string($opt->description)."'";

    $result=mysql_query($sql) or die( mysql_error() );
    }
  ?>

及其解决了我的问题....

and its solve my problem....

推荐答案

在复制中插入... 必须是一个查询:

$sql="INSERT INTO store_feed (title, link, description) VALUES ('$tittle','$links','$dess')"
    ." ON DUPLICATE KEY UPDATE title= '$tittle',description='$dess'";
$result=mysql_query($sql) or die( mysql_error() );

这篇关于使用ON DUPLICATE KEY UPDATE的更新表中的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆