在mysql数据库中存储rss的一些问题

时间:2014-03-27 23:18:08

标签: php mysql sql xml rss

直到现在,我已经或多或少成功地通过以下代码(rss storer.php)将来自不同网站的rss feed(基于xml的文档)解析到我的MySQL数据库中:

    <?php
header("Content-Type: text/html;charset=utf-8");

$feeds = array(
    'http://fotbollskanalen.se/rss',
    'http://www.aftonbladet.se/sportbladet/fotboll/rss.xml',
    'http://www.eurosport.se/fotboll/allsvenskan/rss.xml',
    'http://expressen.se/rss/fotboll'
);

$connect=mysql_connect("localhost","root","") or die("You could not access!");
mysql_select_db("storage",$connect);

if($connect)
{
foreach( $feeds as $feed ) {
    $xml = simplexml_load_file($feed);

    foreach($xml->channel->item as $item)
    {
    $date_format = "j-n-Y"; // 7-7-2008
    echo date($date_format,strtotime($item->pubDate));  
             echo ' <a href="'.$item->link.'" target="_blank">'.$item->title.'</a>';
             echo '<div>' . $item->description . '</div>';

    mysql_query("INSERT INTO rss_feeds (id, title, description, link, pubdate) 
    VALUES (
        '', 
        '".mysql_real_escape_string($item->title)."', 
        '".mysql_real_escape_string($item->description=htmlspecialchars(trim($item->description)))."', 
        '".mysql_real_escape_string($item->link)."', 
        '".mysql_real_escape_string($item->pubdate)."')");       
    }
}
}
else
{echo "An error has occured";}

mysql_close($connect);
?>

因此,当我将此脚本作为测试驱动时,它显示了来自4个链接的rss提要,并且我已经看到它响应了我的服务器上的数据库,因为已经有文件插入到mysql表中。

但是现在问题就出现了。以下是我需要获得帮助的问题:

1:当我在数据库中查看mysql表“rss_feeds”时,我看到许多奇怪的字母似乎已经取代瑞典字母“Å”,“Ä”和“Ö”而我认为它可能是mysql表中的行上的字符集。数据库本身。但如果是这样,那么如何更改它来解决这个问题?

2:虽然MySQL数据库“存储”响应“rss storer.php”中的PHP代码,但我没有看到新的RSS源被插入,因为数据库和PHP文件相互连接。我应该在“rss storer.php”中添加另一个PHP代码,或者我该怎么做才能将绝对最新的RSS源插入到数据库中?

3:当谈到数据库上RSS源的ID时,它们都显示为0.如何使它们成为唯一,它会说每个RSS源都有不同的ID?

4:当我在数据库“storage”上的表“rss_feeds”中查看RSS提要的发布日期时,它们都显示“0000-00-00 00:00:00”。为什么会这样?以下代码位于数据库中的pubdate行:

5       pubdate timestamp   on update CURRENT_TIMESTAMP   Null: No  CURRENT_TIMESTAMP   ON UPDATE CURRENT_TIMESTAMP

5:这是最后一个问题,但可能是最重要的问题。我想在数据库“存储”的mysql表“rss_feeds”中设置一个限制,插入rss提要的最大值,这样rss提要不会太多,如果你理解我的意思,就会以某种方式威胁整个本地服务器。我应该添加一些SQL代码来决定限制或应该如何完成?

如果您需要更多其他必要信息以帮助我解决这些问题,那么我会根据您的意愿向您提供更多信息。

我将向那些将帮助我解决所有这些问题的人致以最诚挚的问候:D

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用此功能

$馈&GT; set_output_encoding( 'ISO-8859-1');

这将确保RSS提要的输出与MySQL编码匹配。否则你会得到像“。”这样的人物。 资料来源:http://samueljcarlson.blogspot.in/2011/12/rss-feeds-to-mysql-database-script.html