Невозможно вставить данные в базу данных MySQL из RSS-канала - PullRequest
1 голос
/ 12 марта 2012

Я использую 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-канала (в этом примере я использую Macrumors), а вот код, который я использую для вставки в базу данных MySQL.

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

Пока я выбираю и отображаю как минимум 20 статей, при обновлении сценария в базу данных добавляются только 3 "статьи".Если я удалю размещение описания в содержании из моего запроса MySQL, я смогу вставить все заголовки и другие данные, которые я выбрал.

Так что я не уверен, связана ли моя проблема с моим сценарием RSS или с тем, как я вставляю данные в базу данных.

Ответы [ 2 ]

0 голосов
/ 12 марта 2012

Скорее всего, вы не используете mysql_real_escape_string () , чтобы убедиться, что текст экранирован перед тем, как поместить его в строку SQL.Если описание содержит ', вы получите что-то вроде:

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

Строка будет заканчиваться на ' в don't, а остальная часть текста вызовет синтаксическую ошибку.

0 голосов
/ 12 марта 2012

Попробуйте сделать:


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

И это должно работать

Примечание: - вам нужно сделать это для всех значений перед вставкой в ​​таблицу.Надеюсь, это поможет

...