アプリ版:「スタンプのみでお礼する」機能のリリースについて

phpでrssを取得して格納表示したいです。
カラムはtitle,link,dateです。
テーブル名はrss_feedです。
breakもきいてないようで、rssの数だけ表示されております。

限界まで考えましたがどうしようもないです。値を取得できません。
エラーも表示されずデータベースには
tutle link date
0   0  2022
のみ表示されております。

<?php
try {
$dsn = 'mysql:dbname=hlxclitx_wp1;host=localhost';
$user = 'hlxclitx_wp1';
$password = 'E.HrypHWxNmltXgC5eS26';

$dbh = new PDO($dsn,$user,$password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//エラーが発生した時に、例外を投げる
echo "データベースへの接続が出来ました";

}catch (PDOException $e) {
echo $e->getMessage();// err時はメッセージを表示
exit;
}

//RSSをまとめる
$url1 = [
'http://blog.livedoor.jp/dqnplus/index.rdf',
'http://alfalfalfa.com/index.rdf',
'http://himasoku.com/index.rdf',];

// insertの準備
$stmt = $dbh->prepare('insert into rss_feed (title, link, date) values (?, ?, ?)');

// URLのループ開始 テーブルに格納
foreach ($url1 as $url) {
if (($rss = @simplexml_load_file($url)) === false) {
continue;
}
foreach ($rss->item as $item) {
$title = $item->title;
$link = $item->link;
$dc = $item->children('http://purl.org/dc/elements/1.1/');
$date = date('Y-m-d H:i:s', strtotime($dc->date));
$stmt->execute([$title, $link, $date]);
}
}

// サイトごとに表示するなら、サイトタイトル表示はこの位置
printf('<h2>%s</h2>', $site_title);
$count = 0;
// 個別記事のループ開始 RSSの取得が始まる
foreach ($rss->item as $item) {
if (++$count > 8) break;
$title = $item->title;//タイトル取得
$link = $item->link;//リンクを取得
$dc = $item->children('http://purl.org/dc/elements/1.1/');//RSSの情報を取得
$thumb = $item->thumb->url;//画像を取得
}
// 取得した記事データの表示
$sql = 'SELECT * FROM rss_feed ORDER BY date DESC';
$stmt = $dbh->prepare($sql);
$stmt->execute();
while ($item = $stmt->fetch(PDO::FETCH_OBJ)) {
print('<ul>');
printf('<li class="sitelink"><a href="%s">%s</a></li>', $item->link, $item->title);
printf('<li class="sitelink"><a href="%s">site</a></li>', $item->link);
printf('<li class="sitedate">%s</li>', $item->date);
print('</ul>');
}
?>

質問者からの補足コメント

  • $stmt6直接変数を格納したり表示出来ないのでしょうか?

      補足日時:2022/01/22 23:35

A 回答 (1件)

誤: $title = $item->title; # オブジェクト扱い


正: $title = (string) $item->title; # 文字列扱いに変換

根拠
https://www.php.net/manual/ja/simplexml.examples …
例6 要素および属性をテキストと比較する
要素または属性を(中略)文字列を引数とする関数に渡すには(中略)文字列にキャストする必要があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!