Help with php fatal uncaught error on retrieving data from db

Jangga

Junior Member
Joined
Aug 8, 2016
Messages
196
Reaction score
11
hello guys im trying to get all records of all users from my database using oop and pdo yet im running into some problem. Problem occurred is:
Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\webtest\classes\DB.php:44

ive checked over and over that value doesnt seem null to me or am i wrong? Pls i need assistance... pls guys

class DB
Code:
class DB {
   
     private static $_instance = null;
     private $_pdo,
                $_query,
                $_error = false,
                $_results,
                $_count = 0;
     
        private function __construct(){
            try {
                $this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') .  '; dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
            } catch (PDOException $e) {
                    die($e->getMessage());
            }
        }
       
        public static function getInstance(){
            if(!isset(self::$_instance)){
                self::$_instance  =  new DB();
            }
            return self::$_instance;
        }
       
        public function query($sql, $params = array()){
            $this->_error = false;

           
if (empty($params)) {
if($this->_query->query($sql)) {
                    $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                    $this->_count = $this->_query->rowCount();
                }

 else{
                    $this->_error = true;
                }
} else if(!empty($params)) {
            if($this->_query = $this->_pdo->prepare($sql)) {
                $x = 1;
               
                if(count($params)) {
                    foreach ($params as $param) {
                        $this->_query->bindValue($x, $param);
                        $x++;
                    }
                }
               
                if($this->_query->execute()) {
                    $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                    $this->_count = $this->_query->rowCount();
                }
                else{
                    $this->_error = true;
                }
            }
            }
            return $this;
        }
       
        public function action($action, $table, $where = array()) {
            if(count($where) ===3) {
                $operators = array('=',  '>',  '<',  '>=', '<=');
               
                $field = $where[0];
                $operator = $where[1];
                $value = $where[2];
               
                if (in_array($operator, $operators)){
                    $sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?";
                   
                    if(!$this->query($sql, array($value))->error()){
                        return $this;
                    }
                   
                }   
                   
            }
else if (empty($where)) {
    $sql = "{$action} FROM {$table}";

     if(!$this->query($sql, array())->error()){
                        return $this;
                    }

}
            return false;
        }
       
         public function get($table, $where) {
             return $this->action('SELECT *', $table, $where);
        }
       
        public function insert($table, $fields = array()) {
             if(count($fields)){
                 $keys = array_keys($fields);
                 $values = ' ';
                 $x =1;
                 
                 foreach ($fields as $field){
                     $values .= '?';
                     if($x < count($fields)){
                         $values .= ', ';
                     }
                     $x++;  
                 }
                 
                 $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES ({$values})";
                 
                 if(!$this->query($sql, $fields)->error()) {
                     return true;
                 }
             }
             return false;
        }
       
          public function results() {
            return $this->_results;
        }
       
         public function first() {
            return $this->results()[0];
        }
       
        public function error() {
            return $this->_error;
        }
       
         public function count() {
            return $this->_count;
        }
       
       
       
}

DisplayUsers page
Code:
$user = new User();
try {
    $userd = $user->getmore('users', array());
} catch (Exception $e) {
                 die($e->getMessage());
             }   
             
        $useru =$userd->getallr();
       
foreach($useru as $user) {
echo $user['email'];
}


User class
Code:
class User{
   
    private $_db,
                $_sessionName,
                $_cookieName;
        public $udatas = array();

    public function __construct($user = null) {
        $this->_db = DB::getInstance();
        $this->_sessionName  =  Config::get('session/session_name');
        $this->_cookieName  =  Config::get('remember/cookie_name');
      }

            public function create ($tabla, $fields = array()) {
        if(!$this->_db->insert("$tabla", $fields)) {
            throw new Exception("There was a problem creating");
        }
       
    }
   
    public function getmore($table, $input) {
         if(!$this->_db->get("$table", $input)) {
            throw new Exception("There was a problem gettibg");
        }
    }
   
    public function getallr() {
        $this->udatas = $this->_db->results();
        return $this->udatas;
    }

}
 
Back
Top