我需要在数据库中进行更敏感的搜索,并识别大小写(如密码(之间的差异。
型号
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;
}
}