使用Codeigniter的WHERE子句中的未知列

问题描述 投票:1回答:2

我试图在CodeIgniter中重构我的一些代码,并尝试在模型中使用实际的SELECT查询语句。但是我收到一个错误说,

未知列:where子句中的XXX。

这是我在CodeIgniter中的SELECT query statement的代码:

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;
            }
php mysql codeigniter
2个回答
0
投票

试试这个

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

0
投票

您可能想对该功能进行一些调整。

  • 使用查询构建器,以防您在任何时候更改数据库,您必须进行少量更改。它还会自动转义变量。
  • 那么,如果您想要的只是ID,那么选择*是一个非常糟糕的主意
  • 为这些变量提供默认值并在执行此操作之前检查它们是否可以在查询中使用也是一个好主意。
  • 最后你的其他陈述实际上是无关紧要的。默认情况下,您可以返回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;
}
© www.soinside.com 2019 - 2024. All rights reserved.