1

我做了一个这样的功能:

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 是资源,在第 29 行的 C:\xampp\htdocs\index.php 中给出的布尔值无法保存文章。

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

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

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

4

1 回答 1

0

实际上,$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())";

现在它起作用了。

于 2015-07-19T13:43:12.070 回答