如何使Codeigniter中的搜索更加敏感



我需要在数据库中进行更敏感的搜索,并识别大小写(如密码(之间的差异。

型号

function checker(){
$this->db->select('*');
$this->db->from('gift_cards');

$this->db->join('gift_partners', 'gift_partners.gp_id = gift_cards.gift_part_id');
if(isset($_POST["redeem"])){
$redeemvalue=$this->input->post("redeem");
$this->db->where('gift_id',$redeemvalue);
}else{
$this->db->where('gift_code',$this->input->post('gift_code'));
$this->db->where('gift_part_id',$this->input->post('partner'));
}

$data=$this->db->get();
if ($data->num_rows() > 0) {

foreach ($data->result_array() as $row) {
$dt[] = $row;

}
return $dt;
}else{

return false;
}
}

我需要更敏感的礼物代码,我使用了WHERE条件,但如果我用大写或小写搜索,则返回相同的结果。

$this->db->where('gift_code',$this->input->post('gift_code'));

MySQL在比较字符时不区分大小写,但可以通过使用键"使其区分大小写二进制";。

$this->db->where('BINARY gift_code',$this->input->post('gift_code'));

以上代码将不起作用。您需要使用SQL来获得所需的结果。

function checker(){
$rawSql = "SELECT * FROM gift_cards JOIN ON gift_partners.gp_id = gift_cards.gift_part_id";
if(isset($_POST["redeem"])){
$redeemvalue=$this->input->post("redeem");

$rawSql.=" WHERE gift_id=?";    
$query = $this->db->query($rawSql, [$redeemvalue]);

}else{
$redeemvalue=$this->input->post("redeem");

// Case Sensitive Query
$rawSql.=" WHERE BINARY gift_code=? AND gift_part_id=?";    
$query = $this->db->query($rawSql, [
$this->input->post('gift_code'),
$this->input->post('partner'))
]);

}

if ($query->num_rows() > 0) {

foreach ($query->result_array() as $row) {
$dt[] = $row;

}
return $dt;
}else{

return false;
}
}

最新更新