2013-11-21 38 views
-1

我一直在看这个代码现在年龄,我真的不明白它从我想要什么。无论我尝试什么,我都会收到相同的错误消息,并且我已经通过其他线程查看了无效。错误是致命错误:在第63行的C:\ wamp \ www \ new_serverside \ sprint1.php中调用非成员函数prepare()。我的代码是:致命的错误:调用成员函数prepare()

<?php 
    include 'ConfigDB.php'; 
?> 

      <?php 
      if(getConnection()) 
       { 
        echo "Server connection successful"; 
       } 
       else 
       { 
        echo "Problem with connection"; 
       } 


      ini_set('display_errors', 1); 

      global $dbh; 

      $query = $dbh->prepare("SELECT * FROM faculty"); 
      $query->execute(); 
      $result = $dbh->query($query); 


      foreach($result as $row) 
      { 
       echo $row['Name'] . "<br/>"; 
      } 
      ?> 
+1

看起来像'$ dbh'是不是真的定义是什么,你认为它是。使用'var_dump'。 – mario

回答

0

错误听起来像$dbh尚未正确初始化。您可以通过使用singleton class而不是全局变量来确保将来不会发生这种情况。

class DB { 
    private $instance = NULL; 
    private __construct() { 
     // create an instance of your db handler 
    } 
    public static getInstance() { 
     if (!$this->instance) 
      $this->instance = new DB(); 
     return $this->instance; 
    } 
} 

而且用它在你的代码是这样

$dbh = DB::getInstance(); 
+0

对于任何发现这一点的人来说,单身人士是一种不同于全球的人。 [单身人士不被认为是一个好的设计模式](https://stackoverflow.com/questions/1812472/in-a-php-project-what-patterns-exist-to-store-access-and-organize-helper-objec ) – Machavity

0

在全局引用之后的$ dbh上调用var_dump()。

var_dump($dbh); 

你应该在那里找到不是你所期望的东西。

+0

谢谢,它解决了这个问题。多谢! – user3019749

0

该错误表示$dbh不是一个对象,因此您无法调用其上的prepare()方法。 $dbh在哪里初始化?在致电prepare()之前,尝试执行var_dump($dbh);以查看该变量中的真实情况。

相关问题