2017-06-06 28 views
0

非對象錯誤這是我的SQL連接碼呼叫一個成員函數查詢()在PDO

$config['db'] = array('host' => 'localhost', 'username' => 'root', 'password' => '', 'dbname' => 'reputize'); 

try 
{ 
    $db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    echo "Database connected successfully"; 
} 
catch(PDOException $e) 
{ 
    echo $sql . "<br>" . $e->getMessage(); 
} 

,這是我使用從表中提取數據的代碼

$query = $db->query("select * from metaTags where filename='index'"); 
while ($row = $query->fetch(PDO::FETCH_ASSOC)) 
{ 
    $ptitle=$row['MetaTitle']; 
    $desc=$row['MetaDisc']; 
    $kwords=$row['MetaKwd'];  
} 

但錯誤不斷表示

呼叫一個成員函數查詢()一個非對象在C:\ XAMPP \ htdocs中\模板OOP \包括\類\ websiteClasses .php on line 14

我在這裏和其他網站上嘗試了很多解決方案,但沒用。 請幫我解決這個問題

+0

是兩個片段,你在同一文件中顯示?如果沒有,你是否包含連接文件? – Qirel

+0

你已經在使用支持**預處理語句**,你應該利用與佔位符(預處理語句)參數化查詢的API來保護你對數據庫[SQL注入(http://stackoverflow.com/q/60174 /)! 開始使用['PDO :: prepare()'](http://php.net/pdo.prepare)。 – Qirel

+0

當您進行數據庫連接時,您可能會遇到可能的錯誤 - 但是在進行實際查詢時,您根本無法完成錯誤檢查? _「我在這裏和其他網站上嘗試了很多解決方案,但沒有用處。」 - 所有您需要做的就是首先查明您的查詢出了什麼問題。如何做到這一點,在網上解釋。 – CBroe

回答

2

你在這裏dbname'.$config['db']['dbname']有一個錯誤應該是dbname='.$config['db']['dbname']

+0

對不起,我掛上等號,但我仍得到相同的錯誤 – Deepanshu

+0

我覺得$ DB變量不是在第二個代碼知,它是同一個文件嗎? $ db是否可以訪問其他功能? –

+0

是的,它是入店因爲我得到上運行的文件 – Deepanshu

1

你忘了DBNAME後添加「=」。

你的配置應該如下

dbname='.$config['db']['dbname'] 

從你的評論,我理解你的「$ DB」的變量必須聲明爲其他功能的訪問。在查詢數據庫之前,請檢查$ db是否有有效的數據庫連接。

我通常使用下面的代碼用於連接和我玩的項目中獲取數據。

function getDbConnection() 
{ 
    $pdo = null; 
    try 
    { 
    $pdo = new PDO("mysql:host=" . HOST . ";dbname=" . DBNAME,USERNAME,PWD); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $pe) 
    { 
    die("Sorry! Could not connect to database " . DBNAME. ": " . $pe->getMessage()); 
    } 
    return $pdo; 
} 

function getData($qry) 
{ 
    $res = null; 
    try 
    { 
    if(!empty($qry)) 
    { 
     $pdo = getDbConnection(); 
     if(!empty($pdo)) 
     { 
     $res = $pdo->query($qry); 
     } 
    } 
    } 
    catch(PDOException $pe) 
    { 
    throw $pe; 
    } 
    return $res; 
} 

注意:上述功能不穩健。但它的作品。

+0

是的,它是入店因爲我得到上運行的文件 – Deepanshu

+0

獲取數據庫連接成功消息數據庫成功消息與變量作用域不同。請在文件和測試開始時全局聲明$ db。 –

+0

我設置變量全球化,但錯誤仍 – Deepanshu

相關問題