парсинг rss feed в php и дамп в sql - PullRequest
0 голосов
/ 24 мая 2018

нашел этот плавающий скрипт для выгрузки данного фида в sql.Однако невозможно сохранить описание канала и изображения отдельно в таблице.ниже приведена часть кода, которая в настоящее время сохраняет некоторое содержимое, но с пустыми столбцами.

любая помощь или совет будут оценены.

    $db = mysql_connect($db_hostname,$db_username,$db_password);
if (!$db)
{
    die("Could not connect: " . mysql_error());
}
.....snip.............

РЕДАКТИРОВАТЬ # 1:

изучение simplepie скрипт и его кеширование.Обновление должно быть решено сегодня вечером.

РЕДАКТИРОВАТЬ # 2: SQL-запрос, который был изменен, чтобы включить описание и скриншот для содержимого таблицы.

CREATE TABLE rss (............ snip ........................

введите описание изображения здесь

РЕДАКТИРОВАТЬ # 3: спасибо Роберт за исправление меня да, это была быстрая копия вставки из исходного сценария и не поставить правильный запрос init. Я обновил SQL-запрос и исправить вещиоднако теперь модернизированному скрипту нужно больше сока, получая ссылку на изображение вместе с постом. Я использую xpath для получения каждой ссылки на пост-изображение, однако не могу включить соответствующее изображение в каждый дамп строки. Оба скрипта работают отлично на своих отдельных основанияхно мне нужна дополнительная помощь в их объединении.

        require_once("./config.php");

    .......snip................

РЕДАКТИРОВАТЬ # 4: ну, это не сработало, я сумел обновить существующую таблицу другим сценарием, я проголосовал за ваш ответ, но не принял егокак правильный ответ по этой причине. Может я не смогxplain правильно, но мой скрипт работает как шарм и просто отсутствует какой-то CSS.хотя спасибо за вашу помощь

ПРИМЕЧАНИЕ: я снимаю оригинальные сценарии с поста /

1 Ответ

0 голосов
/ 24 мая 2018

На скриншоте отсутствует информация внутри столбцов "item_enclosure" и "item_status", остальное заполнено.

Проблема в том, что ваш запрос не пытается вставить эти пропущенные записи

        $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_description, item_url, fetch_date) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_description . "', '" . $item_url . "', '" . $fetch_date . "')";

^ Никогда не будет вставлять "item_enclosure" и "item_status", так как 2 столбца не являются частью запроса на вставку ...

Вам необходимо извлечь 2 отсутствующих элемента и изменить вставкузапрос к:

        $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_description, item_url, fetch_date, item_enclosure, item_status) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_description . "', '" . $item_url . "', '" . $fetch_date . "', '" . $item_enclosure . "', '" . $item_status . "')";

Сначала необходимо определить:

  • $ item_enclosure
  • $ item_status

Кстатизапрос, который вы вставили в ваш обновленный ответ, неверен, он должен начинаться с "INSERT INTO", а не "CREATE TABLE", вы не выводите правильный запрос.

UPDATE:

В вашем исходном коде есть эта строка

$has_image = preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $RSSitem, $image);

Так что сейчас, если ваш код находит изображение, он должен поместить его в массив с именем $ image

Попробуйте print_r из $ imageчтобы увидеть, в каком элементе массива он хранится, я думаю, что это будет $ image [0] [0] или $image [0]

Так что сделайте следующее, чтобы определить URL изображения (я предполагаю, что это $ image [0] [0], но на всякий случай проверьте дважды):

$img_url = (isset($image)) ? $image[0][0] : "";

Затем вам нужно обновить запрос на вставку (я не знаю, какое имя столбца используется для изображения, так что это всего лишь пример):

    $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_description, item_url, fetch_date, item_enclosure, item_status, image_column) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_description . "', '" . $item_url . "', '" . $fetch_date . "', '" . $item_enclosure . "', '" . $item_status . "', '" . $img_url . "')";
...