【问题标题】:CI - show database error or failCI - 显示数据库错误或失败
【发布时间】:2013-05-04 21:57:41
【问题描述】:

我开发了一个简单的登录系统,它工作正常但失败了,我需要知道为什么

问题:如何显示导致失败的原因。这不是验证错误,而是将数据传递给 MySQL 或查询以某种方式失败的错误

这是 db 函数:

function login($email,$password)
{
    $this->db->where("email",$email);
    $this->db->where("password",$password);

    $query=$this->db->get("users");
    if($query->num_rows()>0)
    {
        foreach($query->result() as $rows)
        {
            //add all data to session
            $newdata = array(
                'user_id'  => $rows->id,
                'user_name'  => $rows->username,
                'user_email'    => $rows->email,
                'logged_in'  => TRUE,
            );
        }
        $this->session->set_userdata($newdata);
        return true;
    }
    return false;
}

这是逻辑:

public function login()
{
    $this->load->library('form_validation');
    // field name, error message, validation rules
    $this->form_validation->set_rules('email', 'Your Email', 'trim|required|valid_email');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');

    if($this->form_validation->run() == FALSE)
    {
        $this->signin();
    }
    else
    {
        $email=$this->input->post('email');
        $password=md5($this->input->post('pass'));
        $result=$this->user_model->login($email,$password);
        if($result)
        {
            $this->dash();
        }
        else
        {
            $data['title']= 'Login Error';
            $this->load->view('nav/header', $data);
            $this->load->view('login', $data);
            $this->load->view('nav/footer', $data);
        }
    }
}

我知道错误正在发生,因为如果失败,我会重定向回登录页面并更改标题文本以显示给我(目前仅在测试模式下)-但是我如何找出查询出了什么问题?

【问题讨论】:

标签: php mysql codeigniter codeigniter-2


【解决方案1】:
$this->db->where("email",$email);
$this->db->where("password",$password);
$query=$this->db->get("users");
echo $this->db->last_query();
die();

您可以使用$this->db->last_query() echo 刚刚进行的查询,这将显示您使用值进行的查询,并检查查询是否有效。

阅读更多http://ellislab.com/codeigniter/user-guide/database/helpers.html

【讨论】:

    【解决方案2】:

    如果 y 的行为符合预期,您可以使用 log_message 并检查日志:

    http://ellislab.com/codeigniter/user-guide/general/errors.html

    我通常只在 $query 形成后使用echo '<pre>'; print_r($query->result());die;。 它更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      相关资源
      最近更新 更多