我正在尝试在codeigniter中执行select查询,并为我创建相同的函数,如下所示:
public function validate(){
$username = $this->security->xss_clean($this->input->post('username'));
$password = $this->security->xss_clean($this->input->post('password1'));
$type = $this->security->xss_clean($this->input->post('utype'));
$password=md5($password);
$this->db->select('*');
$this->db->from('ci_users');
$this->db->where('email', $username);
$this->db->where('password', $password);
$this->db->where('utype', $type);
// Run the query
$query = $this->db->get();
// Let's check if there are any results
if($query->num_rows == 1)
{
// If there is a user, then create session data
$row = $query->row();
$data = array(
'userid' => $row->id,
'fname' => $row->fname,
'lname' => $row->lname,
'email' => $row->email,
'utype' =>$row->utype,
'phone' =>$row->mobile,
'city' =>$row->city,
'state' =>$row->state,
'country' =>$row->country,
'validated' => true
);
$this->session->set_userdata($data);
echo '<pre>';print_r($data); exit();
//return true;
}
else
{
echo "OPPS some error";
//return false;
}
}
它总是显示opps一些错误,即使我输入正确的用户名和密码。为什么选择查询不运行?我做错了什么。请帮帮我。
答案 0 :(得分:1)
你被使用:
if($query->num_rows == 1)
更正如下:
if($query->num_rows() == 1)
答案 1 :(得分:0)
以下是一些可以提供帮助的方法:
1)你不需要db-&gt;选择(&#39; *&#39;)(只是一个方便的提示)
2)将$this->db->get()
替换为$this->db->count_all_results()
。然后如果($ query == 1)肯定会计算(我害怕我不认识$ query-&gt; num_rows)
3)在您的模型中或您的选择上方 - 将此行放入:
$this->db->conn_id->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
如果您的SQL查询出现问题,这将通过生成异常来破坏您的代码。
从那里你应该能够诊断你的问题。