質問
以下のコードを使用して、phpでrssフィードを作成しました。すべての変数(つまり、ユーザー名とパスワード)を再確認しましたが、それらは正しいです。 mysqlも正しくセットアップされます。 Mampを使用してコンピューターでローカルに表示しようとすると、空白のページが表示されるだけです。任意の助けをいただければ幸いです..このコードは正しいように見えますか、これを表示するためにmamp以外に使用する必要があるものはありますか?
<? header('Content-type: text/xml'); ?>
<?php
$dbhost = "localhost"; // almost always localhost.
$dbname = "links"; // Database Name
$dbuser = "root"; // Database Username
$dbpass = "password"; // Databse Password
$connect = mysql_connect("$dbhost","$dbuser","$dbpass");// Connecting to Database
mysql_select_db($dbname) or die (mysql_error()); // Selecting Database
?>
<rss version="2.0">
<channel>
<title> </title>
<description> </description>
<link></link>
<?
$sql = "SELECT * FROM news limit 5";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
?>
<item>
<title><?=$row['title']; ?></title>
<author><?=$row['author']; ?></author>
<link>http://MYSITE.com/news.php?id=<?=$row['id']; ?></link>
</item>
<?
}
?>
</channel>
</rss>
解決
いくつか試してみること:
- ログを確認します。
- 出力の前に、
header()
の呼び出しを先頭に移動します。 -
<blockquote>
タグを削除します。 - 処理命令(
<?xml version="1.0"?>
)を上部の<rss>
要素の前に追加します。 -
content-type
ヘッダーをtext/xml
からapplication/xml
に変更します。
他のヒント
このコードをコピーし、MAMPのセットアップに実際に存在するデータベースを使用するようにMySQLの設定を変更すると、DBにテーブルが存在しないため、0アイテムで問題なく動作します。つまり、コードではなく、MAMPのセットアップに問題があるようです。 MySQLサーバーが実行中であり、接続するための適切な情報を持っていることを絶対に確信していますか?
MAMPでは、MAMPパネルを開いて[サーバー<!> gt;]をクリックすると、PHPエラーログにアクセスできます。 PHP <!> gt;ビュー・ログ。設定によっては、エラーが発生したときに空白の出力が表示される場合があります。エラーは正しい方向に導くのに役立つかもしれません。
すべての出力が適切にエスケープされているのでしょうか。 mysqlテーブルのデータには、特別な処理が必要な文字が含まれていますか?
PHP cliがインストールされている場合は、それを使用してテストすることができます。 WebブラウザやRSSクライアントでは見えないものが表示される場合があります。
PHPでのRSS生成にはすべて、feedcreator http://feedcreator.org/ を使用しています。通常、ライブラリを使用する方が簡単です。 こちらに例を投稿しました。
short_tagsを無効にすることも検討してください。実際にXMLを出力しようとしているため、実際には混乱を招く可能性があります。特に、ページの上部に ''のようなものを送信しようとすると、