Я изучаю Php Object Oriented, поэтому я сделал простую страницу входа с некоторыми классами. Вот мой файл login.php, который содержит форму входа в Html, а также я добавил этот php-скрипт, чтобы проверить, как я могу получить запрос из db:
require_once 'db.php'; $user = DB::getInstance()->get('admins',array('username', '=', 'alex')); if(!$user->count()){ echo 'No user'; }else{ echo 'Ok'; }
И вот мой db.php:
<?php 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($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($table, $where){ return $this->action('DELETE ',$table ,$where); } public function error(){ return $this->_error; } public function count(){ return $this->_count; } } ?>
И это сообщение об ошибке, которое я получаю, когда я обновляю страницу ведения журнала:
Вызов функции-члена count () на boolean в login.php в строке 1
Итак, это строка 1 login.php:
if(!$user->count()){
В основном он возвращается к последней функции в моем классе DB, который выглядит следующим образом:
public function count(){ return $this->_count; }
Но я действительно не знаю, почему это происходит! Пожалуйста, если вы знаете, как решить этот вопрос, пожалуйста, дайте мне знать … спасибо.
Вы вызываете метод count () для объекта non. $ User будет массивом результатов. Поэтому мы не можем получить счет из массива результатов. Другой метод заключается в том, что мы можем проверить num_rows массива результатов как mysql_num_rows ($ user) . Поэтому, если любой пользователь выходит, он даст вам счет.