php - 使用 ON DUPLICATE KEY UPDATE 更新表时出错

标签 php mysql

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

我的代码是

 <?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”

我对我的查询做了一些修改,简而言之。

     <?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() );
    }
  ?>

它解决了我的问题....

最佳答案

INSERT ... ON DUPLICATE必须是一个查询:

$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() );

关于php - 使用 ON DUPLICATE KEY UPDATE 更新表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019413/

相关文章:

php - 在数据库表中存储 View 计数

php - zend_call_method_with_N_params

MYSQL 比较 LEFT JOIN 中的多个值

mysql - 从 mySQL 5.5 到 SQL Server 2005 的语法更改

PHP 和 MySQL - 使用标识符将值插入表中

php - 制作一个 PHP 脚本来像 WordPress 一样发布后稿

PHP - 如果所有数组都处于事件状态、非事件状态或不可用,则显示消息

java - 如何在Java MySQL中统计数据

php - 如何通过一个查询批量更新 mysql 数据?

Mysql 数据库同步选项