选择查询不在codeigniter中执行?

时间:2016-12-09 13:49:46

标签: php mysql codeigniter

我正在尝试在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一些错误,即使我输入正确的用户名和密码。为什么选择查询不运行?我做错了什么。请帮帮我。

2 个答案:

答案 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查询出现问题,这将通过生成异常来破坏您的代码。

从那里你应该能够诊断你的问题。