проблема при передаче имени пользователя в качестве аргумента при запросе в базе данных - PullRequest
0 голосов
/ 30 апреля 2020

Когда я вызываю функцию 'get' с именем пользователя в качестве аргумента, он не показывает никакого результата. Но когда я делаю это, передавая идентификатор, тогда он показывает результат. Информация правильно хранится в базе данных. Я следую инструкциям из codecourse на PHP OOP системе входа / регистрации. Мои функции выглядят:

     $user =DB::getInstance();


    $user->get('users', array('username', '=', 'subodh')); // doesn not show result
    $user->get('users', array('id', '=', '24')); // shows result
    if(!$user->count()) {
     echo 'No user';
    }
    else {
     echo $user->first()->username;
    }


     public function get($table, $where)
{
    return $this->action('SELECT *', $table, $where);
}


    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 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;
}
...