无法从RSS源将数据插入MySQL数据库


Unable to insert data in to MySQL database from RSS Feed

我正在使用SimplePie(并且已经使用了MagPie)开源RSS解析器。我已经能够获取RSS提要,并在网页上显示标题、描述和日期。

我曾试图将数据插入MySQL数据库,但在某些方面失败了,这导致了混乱。

require_once 'rss_fetch.inc';
$url = 'http://macrumors.com/rss.xml';
$rss = fetch_rss($url);
echo "Site: ", $rss->channel['title'], "<br>";
foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    $pub   = $item[pubdate];
    $desc  = $item[description]; 
    echo "<a href=$url>$title</a></li><br>";
    echo "$pub<br>";
    echo "<p>$desc</p><br>";
    echo "<br>";

这是从RSS提要中获取的代码(在本例中,我使用的是Macruments),这是我用于插入MySQL数据库的代码。

 mysql_query("INSERT INTO articles (title, linkto, published, contents) VALUES ('$title', '$url','$pub','$desc')"); 

当我获取并显示至少20篇文章时,当我刷新脚本时,只有3篇"文章"插入到数据库中。如果我从MySQL查询中删除了在内容中的描述,我就可以插入我获取的所有标题和其他数据。

所以我不确定我的问题是我的RSS脚本还是我插入数据库的方式。

很可能在将文本放入SQL字符串之前,您没有使用mysql_real_aescape_string()来确保对其进行转义。如果描述中包含任何',您将得到以下内容:;

INSERT into xx (yy) VALUES ('don't');

字符串将在don't中的'处结束,其余文本将导致语法错误。

尝试执行:


$desc  = mysql_real_escape_string($item[description]);

而且它应该工作

注意:-在插入到表之前,您需要对所有值执行此操作。希望它能帮助