Это довольно странно, но когда я выполняю запрос «SELECT * FORM table», он возвращает только первую строку, но когда я выполняю «SELECT * FORM table WHERE id = 2», я получаю вторую строку.Может кто-нибудь, пожалуйста, помогите мне с этим?
Вот мой код: DB class,
class DB
{
private static $_instance = null;
private $_conn,
$_query,
$_error = false,
$_result,
$_count = 0;
/**
*
*/
private function __construct()
{
$servername = Config::get("mysql/host");
$username = Config::get("mysql/username");
$password = Config::get("mysql/password");
$database = Config::get("mysql/db");
$this->_conn = new mysqli($servername, $username, $password, $database);
}
public static function getInstance()
{
if(!isset(self::$_instance)){
self::$_instance = new DB;
}
return self::$_instance;
}
public function query($sql)
{
$this->_error = false;
if ($this->_query = $this->_conn->query($sql)) {
$this->_result = $this->_query->fetch_object();
$this->_count = $this->_query->num_rows;
} else {
$this->_error = true;
}
return $this;
}
private 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} '{$value}'";
if (!$this->query($sql)->error()) {
return $this;
}
}
} elseif (count($where) === 0) {
$sql = "{$action} FROM {$table}";
if (!$this->query($sql)->error()) {
return $this;
}
}
return false;
}
public function get($table, $where = array())
{
return $this->action("SELECT *", $table, $where);
}
Index.php,
$db = DB::getInstance();
$results1 = $db->get('pages')->results();
$results2 = $db->get('pages', ["id", "=", 2])->results();
var_dump($results1); // Returns first row
var_dump($results2); // Returns second row
Это странная вещь, на мой взгляд,$ result1 должен вернуть все строки, верно?Я ожидаю, что это как-то связано с -> fetch_object в методе запроса из класса DB.Я искал там проблему, но не смог ее найти, и поэтому php.net метод fetch_object может возвращать более одной строки.У кого-то есть идеи, и может ли он мне помочь?
ОБНОВЛЕНИЕ: когда я запрашиваю счет, он возвращает правильное количество строк в базе данных, но все равно не будетнаходиться в свойстве $ _result