如果post中的值不等于blank,并且当post中的值和post中的值都为空时,我希望连接查询。问题是当值只在一个post中时 AND
在任何其他第二个值之前。希望得到解决。我使用的是核心php
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 . " ";
5条答案
按热度按时间kupeojn61#
懒惰的黑客包括
AND
在第一种情况下,也会发生变化WHERE
至WHERE 1
但我怀疑,有更聪明、更容易搜索的方法来解决这个问题。哦,还要看看sql注入和准备语句的重要性8e2ybdfx2#
这是解决办法。。。
qlfbtfca3#
试试这个代码。
希望对你有帮助
wlzqhblo4#
在concating“and”之前检查空字符串。
rjjhvcjd5#
你的问题有两种解决办法。一个sql解决方案和一个php解决方案:
第一个解决方案
这是因为在“真”和“其他”的情况下,真条件是多余的。唯一的缺点是,如果所有的帖子都不存在,那么您将获得所有的记录,因为where true总是返回记录。但你可以很容易地做一个检查,看看所有的职位都存在,如果没有:
第二种解决方案
这是因为内爆只会在条件之间插入单词“and”,而不是在每个条件的开头。同样,您必须检查是否没有post,否则您的sql将失败。
就我个人而言,我更喜欢第二种方式,但这要视情况而定。