2013-10-14 23 views
0

URL參數我有一個新聞的管理頁面,其中包括以下標記:mysqli的說法不工作時存在

<ul> 
    <?php newsArchive(); ?> 
</ul> 

的新聞檢索功能如下:

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生成的一個鏈接,這個鏈接將我帶到最後帶有URL參數的同一頁面。例如

mydomain.com/news?edit-news=1 

然後我得到的錯誤:Fatal error: Call to a member function execute() on a non-object in

這究竟是爲什麼?這是運行相同腳本的同一頁面。沒有URL參數就可以正常工作,但這些參數不應該干擾新聞檔案。

+0

這意味着'prepare'語句不會返回有效的'mysqli_stmt'。使用['$ mysql-> error'](http://www.php.net/manual/en/mysqli.error.php)檢索最後一條錯誤消息。順便說一句,輸出數據到HTML標記時總是使用'htmlspecialchars',否則你的代碼容易受到XSS的攻擊。 –

+0

那麼當你點擊一篇新聞文章時,這個函數的功能在哪裏 –

+0

如果你使用if($ newsArchive = $ mysqli-> prepare('SELECT news_id,news_title,news_date FROM news ORDER by news_id DESC')''你會執行只有當查詢是正確的。 – Manolo

回答

0

所以看起來問題實際上是在頁面上的其他準備語句。

我不關閉的語句,例如:

$newsArchive->close(); 

因此,這是不允許的下一個連接才能正常工作。