2013-11-21 3 views
-1

Я уже давно ищу этот код, и я не могу понять, чего он хочет от меня. Я продолжаю получать одно и то же сообщение об ошибке независимо от того, что я пытаюсь, и я просмотрел другие темы безрезультатно. Ошибка Неустранимая ошибка: вызов функции-члена prepare() для не-объекта в C: \ wamp \ www \ new_serverside \ sprint1.php в строке 63. мой код:Неустранимая ошибка: вызов функции-члена 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

Для всех, кто это находит, Singletons - это совсем другой глобальный. [Синглтоны не считаются хорошим шаблоном дизайна] (https://stackoverflow.com/questions/1812472/in-a-php-project-what-patterns-exist-to-store-access-and-organize-helper-objec) – Machavity

0

Вызов var_dump() на $ dbh сразу после глобальной ссылки.

var_dump($dbh); 

Вы должны найти что-то там, чего вы не ожидаете.

+0

Спасибо, исправлена ​​эта проблема. Весьма признателен! – user3019749

0

Ошибка означает, что $dbh не является объектом, поэтому вы не можете вызвать метод prepare(). Где находится $dbh? Попробуйте сделать var_dump($dbh); перед вызовом prepare(), чтобы узнать, что действительно находится в этой переменной.

Смежные вопросы