2013-11-21 35 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);以查看該變量中的真實情況。

相關問題