2010-05-17 60 views
3

我想使用PDO Prepare語句來創建一個從MySQL表中拉出頁面內容的函數。我的代碼在我定義的函數外工作得很好,但無論我做什麼,它都不會在函數內工作 - 我收到以下錯誤:PDO不能在函數內工作

致命錯誤:調用成員函數prepare非對象/home/tappess1/public_html/pages/stations.php第6行

這是我的PHP:

function getPageContent($page) { 
     $st = $db->prepare("SELECT * FROM content WHERE title LIKE ?"); 
     $st->execute(array($page)); 
     $pageContent = $st->fetch(); 
     $text = wordwrap($pageContent['content'], 100, "\n"); 
     $tabs = 4; 
     $text = str_repeat(chr(9), $tabs) . str_replace(chr(10), chr(10) . str_repeat(chr(9), $tabs), $text); 
     echo $text; 
    } 

然後

<?php getPageContent(Main);?> 

我甚至嘗試使用查詢而不是準備語句,只是調用getPageContent()並收到相同的錯誤。

謝謝!

回答

12

您正在嘗試訪問功能scope之外的變量$db。功能內

要麼重新初始化數據庫,或者 - 可能是在你的情況更好,更容易 - 導入全局變量:

function getPageContent($page) { 
    global $db; 

在哪裏以及如何最好地存儲全局數據庫對象是主題很多討論。如果你想進入它,here是一個開始的地方(也有許多其他的東西)。但是,如果你剛剛進入PHP,我會說使用全局變量很好。

+1

令人驚訝的是,在這裏如何快速回答問題。在我發佈之後,一個燈泡就在我的腦海中消失了,我意識到發生了什麼,通過在函數中包含連接腳本來解決它。你的解決方案要好得多,謝謝你們! – NightMICU 2010-05-17 19:54:36

+0

@karim我也是。 - – 2010-05-17 22:24:13

1

變量$ db在函數中是未知的。