我是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');
它正在发出此错误
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
在where子句之后,这应该是这样的
WHERE `username`='admin' AND `password`='7c4a8d09ca3762af61e59520943dc26494f8941b'
而不是
WHERE `username='admin'` AND password='7c4a8d09ca3762af61e59520943dc26494f8941b'
我搜索了Active Record Class以及stackoverflow CodeIgniter WHERE clause和其他论坛的所有位置,但没有找到与我的问题相关的解决方案。提前谢谢。
答案 0 :(得分:6)
尝试这样:
$where = array('username' => $username, 'password' => $password, 'status' => '1');
$this->db->where($where);
答案 1 :(得分:2)
选项1: 您可以创建一个条件字符串并将其传递给where函数。但请务必在等于“=”
之前和之后添加空格此处类似帖子中提到同样的事情error in codeigniter custom where clause
$where = "username = '".$username."' AND password = '".$password."' AND status = '1'";
$this->db->where($where);
选项2:
编写如下代码。
$where = array('username' => $username,
'password' => $password,
'status' => '1');
$this->db->where($where);
答案 2 :(得分:1)
尝试以下代码...
function get_user(){
$this->db->select('id, username, password');
$where = "username=$username AND password=$password AND status='1'";
$this->db->where($where);
$this->db->limit(1);
$query = $this->db->get('YOUR TABLE NAME');
return $query->row_array();
}
答案 3 :(得分:1)
您也可以尝试使用此代码。
$this->db->select("id, username, password");
$this->db->from(TABLE_USERS);
$this->db->where('username', $username);
$this->db->where('password', $password);
$this->db->where('status', 1);
$this->db->limit(1);
$login = $this->db->get();
答案 4 :(得分:0)
您的列名称错误,请查看此错误:
SELECT `id`, `username`, `password`
FROM (`users`)
WHERE `username='admin'`
AND password='7c4a8d09ca3762af61e59520943dc26494f8941b'
AND status='1'
LIMIT 1
第3行。它正在寻找名为
的列`username='admin'`
它应该在哪里
`username`='admin' // the tick marks (`) should wrap the column name
试试这个:
$where = "`username`='$username' AND `password`='$password' AND `status`=1";
$this->db->where($where);
但老实说,最好的方法是使用数组,否则你会有混淆:
像这样:
$this->db->where(array(
'username' => $username,
'password' => $password,
'status' => 1
));
这也会为你逃避变量,这样更安全。
答案 5 :(得分:-1)
尝试这样
$where = "username='".$username."' AND password='".$password."' AND status='1'";
到
$where = "username ='"~~~~~
在“第一列名称”与“运算符”之间留空
在codeigniter v1.0中
答案 6 :(得分:-2)
最好使用SHA($password
)或MD5()值,而不是直接使用哈希值进行检查
这段代码可能有用.. !!
对于查询,您可以进行此替换
username = admin
AND password = 7c4a8d09ca3762af61e59520943dc26494f8941b
AND status ='1'LIMIT 1