首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在联接查询中使用多重和条件

在联接查询中使用多重和条件
EN

Stack Overflow用户
提问于 2018-07-24 05:17:32
回答 5查看 58关注 0票数 0

如果post中的值不等于空白,并且当两个post值中的值都运行得很好时,我想要加入查询。问题是,当值只在一个post中时,那么AND将先于任何其他的第二个值。希望能找到解决办法。我正在使用核心PHP

代码语言:javascript
运行
复制
if(!empty($_POST['agent_wise'])){       
    $agent_wise = $_POST['agent_wise'];
    $queryCondition .= "allusers.sno ='$agent_wise'";
} 

if(!empty($_POST['status_wise'])){      
    $status_wise = $_POST['status_wise'];
    $queryCondition .= " AND st_application.admin_status_crs ='$status_wise'";
}   
if(!empty($_POST['course_wise'])){      
    $course_wise = $_POST['course_wise'];
    $queryCondition .= " AND st_application.prg_name1 ='$course_wise'";
}


$result2 = "SELECT * FROM st_application INNER JOIN allusers on st_application.user_id = allusers.sno where " . $queryCondition . " ";
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-07-24 05:38:50

这是解决办法..。

代码语言:javascript
运行
复制
$flag = 0;
if(!empty($_POST['agent_wise'])){ 
        $flag = 1;    
        $agent_wise = $_POST['agent_wise'];
        $queryCondition .= "allusers.sno ='$agent_wise'";
     } 

if(!empty($_POST['status_wise'])){      
        $status_wise = $_POST['status_wise'];
        if($flag == 1){
        $queryCondition .= " AND st_application.admin_status_crs ='$status_wise'";
        }
      else {
        $queryCondition .= " st_application.admin_status_crs ='$status_wise'";
         $flag = 1;
  }
    }   
    if(!empty($_POST['course_wise'])){      
        $course_wise = $_POST['course_wise'];
       if ($flag == 1){
        $queryCondition .= " AND st_application.prg_name1 ='$course_wise'";
      }
       else {
           $queryCondition .= " st_application.prg_name1 ='$course_wise'";
    }
    }


$result2 = "SELECT * FROM st_application INNER JOIN allusers on st_application.user_id = allusers.sno where " . $queryCondition . " ";
票数 0
EN

Stack Overflow用户

发布于 2018-07-24 05:30:09

试试这段代码。

代码语言:javascript
运行
复制
if(!empty($_POST['agent_wise'])){      
    $agent_wise = $_POST['agent_wise'];
    $queryCondition .= "allusers.sno ='$agent_wise'";
 } 

if(!empty($_POST['status_wise'])){      
    $status_wise = $_POST['status_wise'];
    $queryCondition .= " AND st_application.admin_status_crs ='$status_wise'";
}   

if(!empty($_POST['course_wise'])){      
    $course_wise = $_POST['course_wise'];
    $queryCondition .= " AND st_application.prg_name1 ='$course_wise'";
}


$queryCondition = trim($queryCondition, 'AND'); 


$result2 = "SELECT * FROM st_application INNER JOIN allusers on st_application.user_id = allusers.sno where " . $queryCondition . " ";

我希望它能帮上忙

票数 1
EN

Stack Overflow用户

发布于 2018-07-24 05:30:08

懒散的做法是在第一个条件中也包含一个AND,并将WHERE更改为WHERE 1,但是有更聪明的,而且我怀疑可以很容易地搜索到解决这个问题的方法。哦,也看到了sql注入和准备语句的重要性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51490935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档