2014-01-14 46 views
-1

我是PDO的新手,請耐心等待。我試圖將我的舊mysql轉換爲PDO,但我得到了一個「致命錯誤:調用第5行的functions.php中的非對象的成員函數prepare()」。PDO - 致命錯誤:調用一個非對象的成員函數prepare()

所以這是的functions.php:

<?php 
require('config.php'); 
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 
function getSlug($param){ 
    $sth = $conn->prepare("SELECT * FROM articles WHERE slug = ?"); 
    $sth->execute(array($param)); 
    $slug = $sth->fetchAll(PDO::FETCH_ASSOC); 
    return $slug; 
} 
?> 

這是產生錯誤頁:

<?php 
include('functions.php'); 
$param = $_GET['param']; 
$slug = getSlug($_GET['param']);  
?> 

這似乎是它的最後一行$slug = getSlug($_GET['param']);這是造成問題,但我可以」沒有解決它,或者它可能是其他地方的東西。 感謝

+3

PDO除此之外,你正試圖從函數中使用全局變量。如果你沒有得到通知,你還沒有配置PHP來顯示錯誤。你需要解決這個問題。 –

回答

3

你需要傳遞$conn進入getSlug功能,否則它不知道變量是什麼(你會得到你的錯誤消息):

<?php 
require('config.php'); 
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD); 

function getSlug($conn, $param) { 
    $sth = $conn->prepare("SELECT * FROM articles WHERE slug = ?"); 
    $sth->execute(array($param)); 
    $slug = $sth->fetchAll(PDO::FETCH_ASSOC); 
    return $slug; 
} 
?> 


<?php 
include('functions.php'); 
$param = $_GET['param']; 
$slug = getSlug($conn, $param); 
?> 
+0

經過更新以反映該事實。 – Jon

+0

這太好了。現在當我做'<?php echo print_r($ slug); ?''我得到一切返回(包括'接受'),但當我做'<?php回聲$ slug ['接受']; ?>什麼都沒有返回。有任何想法嗎? – aphextwig

+1

你需要做:'echo $ slug [0] ['accept'];'從第一行打印出'accept'列的值... – Jon

相關問題