前提・実現したいこと
RSSを取得してデータベースに保存して表示したい
発生している問題・エラーメッセージ
なし
該当のソースコード
<?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>'); } ?>
限界まで考えましたがどうしようもないです。値を取得できません。
エラーも表示されずデータベースには
tutle link date
0 0 2022
のみ表示されております。おかしなところがあればどんなことでもいいので教えていただけると助かります。
$stmtは直接変数を格納したり表示できないのでしょうか?
あなたの回答
tips
プレビュー