Codeigniter where子句不起作用

use*_*841 0 php mysql codeigniter

我是codeigniter的新手,我在这个代码的模型中有一个函数

    $this->db->select("id, username, password");
    $this->db->from(TABLE_USERS);
    $where = "username='".$username."' AND password='".$password."' AND status='1'";
    $this->db->where($where);
    $this->db->limit(1);
    $login = $this->db->get();
    echo '<pre>';print_r($login);echo '</pre>';die('Call');
Run Code Online (Sandbox Code Playgroud)

它正在给出这个错误

A Database Error Occurred

Error Number: 1054

Unknown column 'username='admin'' in 'where clause'

SELECT `id`, `username`, `password` FROM (`users`) WHERE `username='admin'` AND password='7c4a8d09ca3762af61e59520943dc26494f8941b' AND status='1' LIMIT 1

Filename: C:\wamp\www\customadmin\system\database\DB_driver.php

Line Number: 330
Run Code Online (Sandbox Code Playgroud)

在where子句之后,这应该是这样的

WHERE `username`='admin' AND `password`='7c4a8d09ca3762af61e59520943dc26494f8941b'
Run Code Online (Sandbox Code Playgroud)

而不是这个

WHERE `username='admin'` AND password='7c4a8d09ca3762af61e59520943dc26494f8941b'
Run Code Online (Sandbox Code Playgroud)

我搜索过Active Record Class以及stackoverflow CodeIgniter WHERE子句和其他论坛的所有地方,但没有找到与我的问题相关的解决方案.提前致谢.

use*_*213 6

试试这样:

$where = array('username' => $username, 'password' => $password, 'status' => '1');

$this->db->where($where); 
Run Code Online (Sandbox Code Playgroud)

  • @Prodikl 它也接受自定义字符串,OP 中的问题在于反引号,使用 `$this-&gt;db-&gt;where($where,NULL,FALSE);` 应该可以解决它 (2认同)