2008-09-10 Wed

BLOG.phpのPHP Warning

PHP 5にしてからBLOG.phpがエラーを吐き続けていたのですが、やっとエラーを出さない方法が分かりました。

と断言しておいてなんですが、結論を言うとエラーが発生しなくなった訳ではありません。いろいろ調べて「今日も今日とて」さんで紹介されていることが原因であろうことは分かりました。ただ、残念ながらというか、NP_ShowBlogs、Blog.phpともすでに修正されています。念のため他の記事一覧表示系プラグインも調べましたが問題無し。やはり原因はBLOG.phpにありそう…と思いきや、エラーが発生するページには必ずNP_ShowBlogsが使われています。

なんて感じで思考がぐるぐる回っていたのですが、実害が感じられないので放置していました。ただ、phpのエラーログが巨大になるのが何となく気になるので定期的に削除していたのですが、大事なエラーログに同じ内容がずらりと羅列されるとエラー内容を確認する気が失せてしまいます。これではいかんと心を入れ替え、PHP: データベースに関する問題 - Manualを読んでいると、意外な、というかあっけない解決方法を発見しました。

"Warning: 0 is not a MySQL result index in <file> on line <x>" もしくは "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>" のようなエラーが出るのはなぜでしょうか?

あなたは値が 0 である結果(result)ID を指定しようとしています。0 は あなたのクエリが何らかの理由で失敗したことを示しています。結果 (result)ID を使用する前に、クエリを送信したあとのエラーをチェック する必要があります。以下のようなコードが正しい方法です。

<?php

$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
?>
もしくは
<?php

$result = mysql_query("SELECT * FROM tables_priv")
or die("Bad query: " . mysql_error());
?>

PHP: データベースに関する問題 - Manual

つまりエラーが発生したら処理を止めろと。なるほどなるほど。ということで、BLOG.phpに以下の処理を追加しました。

// execute query
$items = sql_query($query);
// 追加はじまり
if (!$items) {
	return;
}
//追記ここまで

このたった3行の追記だけで、あれだけ気になっていたエラーが発生しなくなりました。もちろん生成内容も問題無し。こんな付け焼き刃的な対処でいいのであろうか、という一抹の不安は残りますが、多分、きっと問題ないはずです。

2008-09-10 Wed by pushman - Category: Nucleus
Keyword:
Comment: 0 - TrackBack: 0

このページの先頭に戻る

「BLOG.phpのPHP Warning」へのツイート

「BLOG.phpのPHP Warning」へのトラックバック

TrackBack URL:

「BLOG.phpのPHP Warning」へのコメント





このページの先頭に戻る