class db { private $_pdo , $_query, $_error = false, $_results , $_count = 0 ; private function __construct () { try { $host = config::get('mysql/host'); $database = config::get('mysql/db'); $username = config::get('mysql/user'); $pasword = config::get('mysql/password'); $this->_pdo = new PDO("mysql:host=$host;dbname=$database", $username, $pasword); } 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($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 ; } } } return false ; } public function get($table , $where) { return $this->action("SELECT *",$table,$where) ; } public function delete($tabale , $where) { return $this->action('DELETE' ,$table , $where) ; } public function count() { return $this->_count ; } public function error() { return $this->_error ; } }
index.php
$a = db::getInstance()->get('users',array('username','=','ram')) ; if(!$a->count()) { echo "No User" ; } else { echo "OK " ; }
В файле индекса есть ошибка:
Неустранимая ошибка: вызовите функцию-член функции count () в Boolean в строке 4.
Ваш метод ->get(..)
возвращает значение из ->action
которое является boolean
поэтому сделайте так:
$a = db::getInstance(); // returns the instance $a->get('users',array('username','=','ram')); // this return true or false if(!$a->count()) { echo "No User" ; } else { echo "OK " ; }
Также вы пропустили некоторые $ на ->action()
, это должно быть:
$sql = "{$action} FROM {$table} WHERE {$field} {$operator} ?" ;