Неизвестный столбец в предложении WHERE с использованием Codeigniter - PullRequest
0 голосов
/ 08 сентября 2018

Я пытаюсь реорганизовать часть своего кода в CodeIgniter и пытаюсь получить действительные операторы запроса SELECT в модели. Однако я получаю сообщение об ошибке,

Неизвестный столбец: XXX в предложении where.

Вот мой код для SELECT query statement в CodeIgniter :

public function login_user($username, $password){

            $result = $this->db->query('SELECT * FROM users WHERE (username = '.$username.') AND (password = '.$password.')');

            if ($result->num_rows() == 1) {
                return $result->row(0)->id;
            }else{
                return false;
            }

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Возможно, вы захотите внести несколько изменений в эту функцию.

  • Используйте построитель запросов, чтобы в случае изменения базы данных в любой момент вам пришлось вносить небольшие изменения. Он также автоматически экранирует ваши переменные.
  • Тогда, если все, что вам нужно, это идентификатор, то очень плохая идея выбрать *
  • Также неплохо дать значения по умолчанию этим переменным и проверить, готовы ли они использовать в запросе, прежде чем делать это.
  • Наконец, ваше утверждение else на самом деле не имеет значения. Вы можете просто вернуть false по умолчанию без этого.

Примерно так:

public function login_user($username = null, $password = null) {
    if (is_null($username) || is_null($password)) return false;
    $result = $this->db->select('id')
        ->from('users')
        ->where('username', $username)
        ->where('password', $password)
        ->get()
        ->row();

    if ( !empty($result) ) {
        return $result->id;
    }
    return false;
}
0 голосов
/ 08 сентября 2018

Попробуйте это

 $result = $this->db->query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...