2014-12-05 113 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

相关问题