Intereting Posts
Какова стоимость исполнения «include» в PHP? Сохранить ошибку в базе данных MySQL MySQL – организация содержимого базы данных (спортивная лига) Symfony2 bootstrap.php.cache пытается включить несуществующий файл цвет изменения поля для jpgraph mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, boolean означает, что и как его можно исправить? Как сохранить память при чтении файла в Php? Обновление Symfony Composer с интерфейсом SymfonyRequirements Разница между временем () и новым MongoDate ()? У меня есть класс с 14 статическими методами и 4 статическими свойствами – это плохо? Добавление к тому же массиву с двумя разными циклами foreach PHP / SQL PHPUnit утверждает, что не вызывается метод Как упорядочить события в PHP для загрузки файлов на amazon S3 Не удалось получить соединение: php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны Не удается установить PHPUnit через PEAR, требуется PEAR Installer> = 1.9.2, не может обновить PEAR с 1.9.0

Неустранимая ошибка: вызов функции-члена count () в булевом

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} ?" ;