这里,我想对多个字段执行搜索查询,这些字段基于AND&要操作的OR运算符我放置了两个单选按钮一个用于AND OPERATOR(匹配两个标准)而另一个是OR OPERATOR(标准之一)。
我的问题在这里AND运算符运行成功但是OR运算符没有运行。
我写了下面的代码:型号:
// Variables treatise
$lnameFilter=$this->input->post('lnameFilter');
$id=$this->input->post('id');
$firstname= $this->input->post('fname');
$opt=$this->input->post('and');
$strWhere="id_photo LIKE "."'%".$id."%'";
// $lnamefilter treatise
if(!empty($lnameFilter)) {
// AND OPERATOR (ON SELECTING RADIO BUTTON)
if($opt==1) {
if($strWhere != "") {
$strWhere=$this->db->where("($strWhere"." AND lastname LIKE "."'%".$lnameFilter."%')");
}
else {
$strWhere=$this->db->where("(lastname LIKE "."'%".$lnameFilter."%')");
}
}
// OR OPERATOR (ON SELECTING RADIO BUTTON)
if($opt==2) {
if($strWhere != "") {
$strWhere=$this->db->where("($strWhere"." OR lastname LIKE "."'%".$lnameFilter."%')");
}
else {
$strWhere=$this->db->where("(lastname LIKE "."'%".$lnameFilter."%')");
}
}
}
// $firstname treatise
if(!empty($firstname)) {
if($opt==1) {
if($strWhere != "") {
$strWhere=$this->db->where("($strWhere"." AND firstname LIKE "."'%".$firstname."%')");
}
else {
$strWhere=$this->db->where("(firstname LIKE "."'%".$firstname."%')");
}
}
if($opt==2) {
if($strWhere != "") {
$strWhere=$this->db->where("($strWhere"." OR firstname LIKE "."'%".$firstname."%')");
}
else {
$strWhere=$this->db->where("(firstname LIKE "."'%".$firstname."%')");
}
}
}
答案 0 :(得分:0)
不太确定你在这里做什么,但试试这个......在OR是
的两行更改
$strWhere=$this->db->where("($strWhere"." OR lastname LIKE "."'%".$lnameFilter."%')");
到
$strWhere=$this->db->where("(($strWhere)"." OR lastname LIKE "."'%".$lnameFilter."%')");
那应该解决它。
您的问题是$strWhere
和OR
语句是从左到右执行的,如果您有AND
和OR
,则可能会非常困惑。
答案 1 :(得分:0)
你不必做$ strWhere = $ this-> db-> where();使用like代替where
只是做你的条件
<div class="input text">
<input id="zip" name="zip" type="number" min="0" max="99999" ng-model="formData.zip" placeholder="Type here..." class="input-medium" ng-init="0">
https://www.codeigniter.com/userguide3/database/query_builder.html
答案 2 :(得分:0)
尝试以下代码。
$strWhere=$this->db->where("(".$strWhere.") OR (lastname LIKE '%".$lnameFilter."%')");