数据检索无效

时间:2013-12-04 19:08:51

标签: php database codeigniter

在我的codeigniter项目中,单击登录按钮时,它不会重定向到用户主页。但对我的客户来说,它运作良好。

当我使用print_r($query)时,它会显示以下错误:

  

CI_DB_mysql_result对象([conn_id] =>资源ID#32 [result_id] =>资源ID#38> [result_array] => Array()[result_object] => Array()[current_row] = > 0 [num_rows] => 0 [row_data] =>)

我在代码的末尾尝试了result(),但它仍然无效。我该如何解决这个问题?

我的控制器代码如下:

<?php 
class Main extends Controller {
   function Main()
   {
        parent::Controller();
   }

function index()
{

    $errMsg     = '' ;
        if($this->input->post('adminUsername') && $this->input->post('adminPassword')){
                    $user_name = $this->input->post('adminUsername');
                    $pass_word = base64_encode($this->input->post('adminPassword'));
                    $query=$this->db->get_where('gm_adminusers',array('adminUsername'=>$user_name,'adminPassword'=>$pass_word,'admin_status'=>'A'));
                    print_r($query);

                    if ($query->num_rows() > 0)
                    {
                            $arrRow =$query->row_array();
                            $newdata = array(
                             'sess_adminId'  =>$arrRow['adminId'],

                       );
                       $this->db_session->set_userdata($newdata);
                        if($this->db_session->userdata('sess_adminId')){
                                    redirect('user/home');
                                }
                                else{
                                    $errMsg ='<span style="color:red">Login Error :Please Check Your input.</span>';    
                                    /*redirect('user/home');    */
                                }   

                    }else{
                    $errMsg ='<span style="color:red">Critical Error:Contact Your Administrator</span>';    


                    }
    }

    $data['errMsg']         = $errMsg;
    $this->load->view('header');
    $this->load->view('index',$data);
    $this->load->view('footer');

}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

返回0行不是“错误”。这是对有效MySQL查询的有效响应。为什么查询返回0行?因为用户名和密码不匹配。

我假设您输入123456作为密码。无论你怎么努力,当你做base64_encode('123456')时,你都不会得到123456

您需要做的是删除base64_encode并将其替换为真正的密码解决方案。 PHP 5.5有一个内置的(http://www.php.net/manual/en/ref.password.php 1

显然,您需要在数据库中重新保存所有密码。另外,请确保以相同的格式存储它们。您目前有一个明文,另一个是base64。

1如果您没有PHP 5.5,可以试试这个:https://github.com/ircmaxell/password_compat