2014-12-05 108 views
1

此代碼出錯。PDO致命錯誤 - 調用一個非對象的成員函數prepare()

Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\progapps\addReminder.php on line 12

這裏是我的代碼:

addReminder.php

<?php 

include_once("includes/database.php"); 

try { 
    global $dbh; 
    $query = $dbh -> prepare("SELECT * FROM reminder_type;"); 
    $query->setFetchMode(PDO::FETCH_ASSOC); 
    $query ->execute(); 
} catch(PDOException $ex) { 
    echo $ex->getMessage(); 
} 

?> 

這是數據庫的連接。

database.php中

<?php 

    include("constants.php"); 

    class MySQLDB { 

     function MySQLDB(){ 
      global $dbh; 
      try{  
       $dbh = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_NAME.'',DB_USER,DB_PASS); 
       $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); 
      }catch(PDOException $e){ 
       echo $e->getMessage(); 
       die(); 
      } 
     } 
    } 

這裏是常數

constants.php

<?php 
$currency = '&#x20b1;'; 
define("DB_SERVER", "localhost"); 
define("DB_USER", "root"); 
define("DB_PASS", ""); 
define("DB_NAME", "hrisdb"); 
?> 

什麼是可能的原因是什麼?我該如何解決這個問題?感謝你們!

+0

線的問題;您的SQL語句中可能有拼寫錯誤,或者無法建立數據庫連接。 – Sablefoste 2014-12-05 16:08:20

+2

可能是'reminder_type;'中的分號; – 2014-12-05 16:10:13

+0

分號不是問題,我已經刪除它。仍然沒有變化 – 2014-12-05 16:12:10

回答

1

這應該工作

$currency = '&#x20b1;'; 
define("DB_SERVER", "localhost"); 
define("DB_USER", "root"); 
define("DB_PASS", ""); 
define("DB_NAME", "hrisdb"); 



try { 
    $dbh = new PDO('mysql:host=' . DB_SERVER . ';dbname=' . DB_NAME . '', DB_USER, DB_PASS); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); 
} catch (PDOException $e) { 
    echo $e->getMessage(); 
    die(); 
} 




try { 

    $query = $dbh->prepare("SELECT * FROM reminder_type;"); 
    $query->setFetchMode(PDO::FETCH_ASSOC); 
    $query->execute(); 
} catch (PDOException $ex) { 
    echo $ex->getMessage(); 
} 

,如果你想成爲一個類裏面看看這12 extending PDO class

+0

沒有工作:( – 2014-12-05 16:17:56

+0

工作正常,你會得到什麼錯誤? – 2014-12-05 16:20:00

+0

還是一樣的。 – 2014-12-05 16:20:54

0

您還沒有調用函數MySQLDB。所以變量$dbh甚至不存在。

+0

它可能存在,因爲他有'include_once(「includes/database.php」);' – Sablefoste 2014-12-05 16:09:44

+0

可能,但我們看不到。 – Flosculus 2014-12-05 16:11:02

+0

我如何向你展示? – 2014-12-05 16:12:26

相關問題