如何在CodeIgniter中编写数据库查询的复合语句

时间:2012-08-28 14:26:23

标签: php database codeigniter

要设计密码用户名身份验证,我尝试从表(成员资格)中检索“salt”并将其附加到密码。然后用SHA256加密组合。但是当我编写如下的validate()函数时,出现了一个错误

  

严重程度:4096

     

消息:无法将类CI_DB_mysql_driver的对象转换为   串

代码:

public function validate(){

  $this->db->where('username',$this->input->post('username'));
  $salt=(string)$this->db->select('salt');
  $this->db->where('password',hash('sha256',$this->input->post('password').$salt));
  $query=$this->db->get('membership');

  if($query->num_rows()==1){ return TRUE; }
}

如何解决问题?我正在使用codeigniter 2.1.2。非常感谢!

1 个答案:

答案 0 :(得分:0)

您需要创建两个单独的查询:

public function validate(){

    $this->db->select('salt');
    $this->db->where('username', $this->input->post('username', TRUE));
    $salt = (string) $this->db->get('membership')->row()->salt;

    $this->db->where('password', 
                    hash('sha256', $this->input->post('password', TRUE). $salt));
    $query=$this->db->get('membership'); 

    if($query->num_rows()==1) { 
         return TRUE; 
    }
    return FALSE;
}