gpt4 book ai didi

PHP mysql 查询生成器显示我想要的内容

转载 作者:行者123 更新时间:2023-11-29 11:59:05 24 4
gpt4 key购买 nike

我对 PHP 比较陌生,我需要一些有关搜索查询的帮助。

我有一些下拉“选择”和一个“复选框组”,它将使用 (...WHERE SomethingA = 'somethingA' && SomethingB = 'somethingB' 等) 过滤数据库中的搜索

这一切都工作得很好,但当我想让它不必使用某些搜索字段时,问题就来了,所以如果“SomethingA”被禁用或 value=“none”,那么它只会返回 WHERE SomethingB = '某事B'。

我尝试使用 OR 而不是 AND,但是如果两个值都为 true 并且没有真正正确过滤它,则会返回两个值。

我最初的解决方案是使用 if..else 语句来定义查询,例如:

$query = "SELECT * FROM table";        
$results = $con->query("$query $where $QueryA $QueryB $QueryC");

if($_GET['SomethingA'] == "none" && $_GET['SomethingB'] == "none" && $_GET['SomethingC'] == "none"){
$where = ""
$QueryA = ""
$QueryB = ""
$QueryC = "ORDER by ID" //if all search field is 'none' then get all results
}elseif($_GET['SomethingB'] == "none" && $_GET['SomethingC'] == "none"){
$where = "WHERE"
$QueryA = "SomethingA = '{SomethingA}'" //only use A filter one field
$QueryB = ""
$QueryC = ""
}elseif($_GET['SomethingA'] == "none" && $_GET['SomethingC'] == "none"){
$where = "WHERE"
$QueryA = ""
$QueryB = "SomethingB = '{SomethingB}'" //only use B filter one field
$QueryC = ""
.....

它有效,但你已经可以看到问题,就好像我想交叉矩阵所有条件一样,它变得非常冗长和困惑。所以我的问题是是否有更好的方法来做到这一点,例如,使 value='none' 返回所有结果?

一直在寻找并从多个角度攻击它,但找不到解决方案..也许 javascript 可以提供帮助,但我不是最擅长的。

提前致谢

最佳答案

这个问题不太清楚,但是看看这个。应该有帮助。

$query="SELECT * FROM table WHERE";
$query_link = " AND ";
$isASet=false;
$isBSet=false;
$isCSet=false;

if(strcmp($_GET['SomethingA'],"none") != 0){
$query.=" column = {$_GET['SomethingA']}";

//set this to true for later if statements
$isASet=true;
}


if(strcmp($_GET['SomethingB'],"none") != 0){
//check if A has been set, if yes include an AND
if($isASet){
$query.=$query_link;
}
//include this one as usual
$query.=" column = {$_GET['SomethingB']}";
$isBSet=true;
}

if(strcmp($_GET['SomethingC'],"none") != 0){
//check if A or B has been set, if yes include an AND
if($isASet || $isBSet){
$query.=$query_link;
}
//include this as usual
$query.=" column = {$_GET['SomethingC']}";
}

//run query and collect result
$result = $connection->query($query);

关于PHP mysql 查询生成器显示我想要的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32678454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com