次のマークアップを含むニュース管理ページがあります。
<ul>
<?php newsArchive(); ?>
</ul>
newsArchive 関数は次のようになります。
function newsArchive(){
global $mysqli;
$newsArchive = $mysqli->prepare('SELECT news_id,news_title,news_date FROM news ORDER by news_id DESC');
$newsArchive->execute();
$newsArchive->bind_result($archiveID,$archiveTitle,$archiveDate);
while ($newsArchive->fetch()) {
$archiveDate = date('M Y', strtotime($archiveDate));
echo
'<li class="clear">'.
'<a class="left" href="news?edit-news='.$archiveID.'">'.$archiveTitle.'</a>'.
'<span class="right">'.$archiveDate.'</span>'.
'</li>';
}
}
上記の PHP によって生成されたリンクの 1 つをクリックすると、末尾に URL パラメータがある同じページに移動する場合を除いて、これですべて正常に動作します。例えば
mydomain.com/news?edit-news=1
次に、エラーが発生します。Fatal error: Call to a member function execute() on a non-object in
なぜこうなった?同じスクリプトを実行している同じページです。URL パラメーターがなくても問題なく動作しますが、これらのパラメーターがニュース アーカイブに干渉しないようにする必要があります。