2012-06-03 2 views
0

У меня была ошибка в моем коде: Неустранимая ошибка: вызов не-объекта функции-члена в/var/www/crud_php/core/class_ManageDatabase. PHP на линии линии 23Ошибка объекта: function query on non-object

Ошибка: $query = $this->link->query("SELECT * FROM $table_name ORDER BY id ASC");

<?php 

class ManageDb{ 
    public $link; 

    function __construct() { 
     include_once 'class_database.php'; 
     $conn = new database; 
     $this->link = $conn->connect(); 

     return $this->link; 
    } 

    function getData($table_name, $id=null){ 
     if(isset($id)){ 
      $query = $this->link->query("SELECT * FROM $table_name WHERE id = '$id' ORDER BY id ASC"); 
     }else{ 
     **$query = $this->link->query("SELECT * FROM $table_name ORDER BY id ASC");** 
     } 

     $rowCount = $query->rowCount(); 
     if ($rowCount >=1){ 
      $result = $query->fetchAll(); 
     }else{ 
      $result = 0; 
     } 

     return $result; 
    } 


} 



?> 

дб подключения:

<?php 
include_once '../config.php'; 

class database { 

    protected $db_conn; 
    public $db_name = DB_NAME; 
    public $db_host = DB_HOST; 
    public $db_pass = DB_PASS; 
    public $db_user = DB_USER; 

    function connect() { 
     try { 
      $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass); 
     } catch (PDOException $e) { 
      return $e->getMessage(); 
     } 
    } 

} 

?> 
+1

Вы уверены, что соединение с базой данных работает после $ conn-> connect()? Если это возвращает false, вы получаете тип ошибки, которую вы получаете. –

ответ

1

Это означает $this->link не является объектом. Вы забыли вернуть соединение в свой метод connect(). Добавьте return $this->db_conn; в этот метод.

На боковой ноте, возвращая строку в случае ошибки, является очень плохой идеей. Пусть исключение распространяется или прерывает скрипт, но не возвращает что-то совершенно другое, что приведет к появлению нечетных ошибок в вашем коде. Вы также ничего не можете вернуть от конструктора.

+0

Да. Я забыл вернуть $ this-> db_conn Спасибо. сожалею – dipman