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

时间:2018-09-08 03:50:36

标签: php mysql codeigniter

我正在尝试在 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;
            }

2 个答案:

答案 0 :(得分:0)

尝试一下

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

答案 1 :(得分:0)

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

  • 使用查询生成器,以便万一您更改数据库时几乎不必进行任何更改。它还将自动转义您的变量。
  • 然后,如果您只需要ID,那么选择*
  • 向这些变量提供默认值,并在检查之前检查它们是否准备好在查询中使用,也是一个好主意。
  • 最后,您的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;
}