2012-09-20 68 views
-2

我的工作對我自己的註冊類,但它似乎我與PDO一個問題需要 瀏覽器返回這個對我說:PDO錯誤在註冊類

Fatal error: Call to a member function query() on a non-object

我在我的數據庫配置文件包含在主頁上。這是如下:

<? 
    $dsn = 'mysql:dbname=magazin-online;host=localhost;'; 
    $username = 'root'; 
    $password = ''; 

    try{ 
     $pdo = new PDO($dsn, $username, $password); 
    }catch(PDOException $e){ 
     echo 'Connection failed!: '.$e->getMessage(); 
    } 

一個在註冊類導致錯誤的行是這樣的:

$pdo->query("insert into ...() ... values()); 

現在,我不要讓我的註冊類中的任何數據庫連接,因爲我已經包含了文件可以爲它承擔。

我該如何擺脫那個錯誤?

回答

0

嘗試使用的exec代替query

$pdo->exec("insert into ...() ... values()); 
0

您正捕獲由新PDO生成的異常,然後繼續執行。

通過這樣做,你必須檢查的類存在,所以更改:

if($pdo) 
    $pdo->query("insert into ...() ... values()); 

但是...一個更好的辦法是不是這樣的嚴重錯誤後繼續執行。 因此,更好地改變這樣的連接:

$dsn = 'mysql:dbname=magazin-online;host=localhost;'; 
    $username = 'root'; 
    $password = ''; 

    try{ 
     $pdo = new PDO($dsn, $username, $password); 
    }catch(PDOException $e){ 
     echo 'Connection failed!: '.$e->getMessage(); 
     die; 
    } 
0

如果我理解正確,$ PDO是一個全局變量。如果要調用pdo- $>查詢函數裏面,你要麼必須通過$ PDO連接作爲一個參數或在成員函數的開頭聲明它作爲全球

global $pdo;