【问题标题】:SimpleXmlElement failes to fetch itemsSimpleXmlElement 未能获取项目
【发布时间】:2013-02-24 08:03:20
【问题描述】:

我做了一个这样的函数:

function getFeed($feed_url) {
    $content = file_get_contents($feed_url);
    $x = new SimpleXmlElement($content);
    echo "<h3>".$x->channel->title."</h3><div>";
    foreach ($x->channel->item as $entry) {

        $title = utf8_decode(stripslashes(mysql_real_escape_string($entry->title)));
        $link = utf8_decode(stripslashes(mysql_real_escape_string($entry->link)));
        $desc = utf8_decode(stripslashes(mysql_real_escape_string($entry->description)));
        $chkexist="SELECT * FROM articles WHERE title='$title' LIMIT 1";
        $i =1;


        $chkresult=mysql_query($chkexist);
        $countresult=mysql_num_rows($chkresult);
        if ($title=="") {
            echo "No article title, skipping ".$i++."<br>";
        }else{
            if ($countresult==1) {
            echo "The article: ".utf8_encode($title)." Exists. Passing.<br>";
            }else {
                $sql="INSERT INTO articles (title,link,description,date) VALUES ('$title','$link','$desc',NOW())";
                mysql_query($sql) or die("Failed to save articles");
                echo "The article: ".utf8_encode($title)." Is saved<br>";
            }
        }   
    }
echo "</div>";
}

它可能并不完美,我对这个游戏还很陌生,但是当我尝试给它例如这个提要时:http://www.tek.no/feeds/general.xml 它最终会保存但不是所​​有项目,最后会出现错误提示:警告: mysql_num_rows() 期望参数 1 是资源,布尔值在 C:\xampp\htdocs\index.php 中第 29 行 未能保存文章。

如您所见,我在本地工作。

如果我尝试另一个提要,例如:http://www.dagbladet.no/rss/innenriks/,它会保存 4 个项目并在查询中只给出自定义错误消息,而不是警告:mysql_num_rows() 需要参数.. 等等。

知道我在这里做错了什么吗?有没有人有 xampp 或者 wampp 可以试试这个功能?

【问题讨论】:

  • 显然,您的查询$chkresult 不会从数据库返回记录。在$i=1; 之后做一个var_dump($chkexist);
  • 如果您没有理解该功能的编程技能,这并不是那么明显。感谢您的帮助,我试试看会发生什么,我需要学习如何调试/诊断我的代码 :-) 再次感谢。
  • 用另一个检查 $chkresult 是否有值的 if 语句解决了这个问题。
  • 实际上,$desc 并没有被转义,我通过mysql_real_escape_string(); 发送了变量所以在我的查询中我这样做了:$sql="INSERT INTO articles (title,link,description,pubdate,date) VALUES ('".mysql_real_escape_string($title)."','".mysql_real_escape_string($link)."','".mysql_real_escape_string($desc)."','$pubdate',NOW())";

标签: php mysql function rss simplexml


【解决方案1】:

实际上,$desc 没有被转义,我通过 mysql_real_escape_string(); 发送了变量。所以在我的查询中我这样做了: $sql="INSERT INTO article (title,link,description,pubdate,date) VALUES ('".mysql_real_escape_string($title)."','".mysql_real_escape_string($link)." ','"‌​.mysql_real_escape_string($desc)."','$pubdate',NOW())";

现在可以了。

【讨论】:

    猜你喜欢
    • 2010-12-31
    • 2020-09-21
    • 1970-01-01
    • 2011-05-07
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多