簡體   English   中英

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

[英]Unknown column in WHERE clause using 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;
            }

嘗試這個

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

您可能需要對該功能進行一些調整。

  • 使用查詢生成器,以便萬一您更改數據庫時幾乎不必進行任何更改。 它還將自動轉義您的變量。
  • 然后,如果您只需要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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM