gpt4 book ai didi

php - SQL 中的数学运算符不排除 "NA"值

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

我正在使用下面的代码在数据库中搜索高于或低于特定列中输入值的条目之间切换。

if (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Above"){

$operator = ">";

}

elseif (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Below"){

$operator = "<";

}

elseif (!isset($_POST["abovebelow"])){

$operator = "LIKE";
$value = "%";

}

$result = $mysqli->prepare("SELECT t.column FROM table t WHERE t.value".$operator." ( ? );");

$result->bind_param($value);
$result->execute();

对于此数据集,t.value 为 -1,0,1 或 NA。当我将查询设置为高于 -1 或 0 时,NA 值也会显示。但是当我将它设置为低于 1 或 0 时,没有显示 NA 值。为什么是这样?有什么我可以添加到查询中以防止在选择上方或下方时显示 NA 值(但在未选择任何内容时不显示)吗?

我对上述问题的思考方式是:有没有一种方法可以在查询中使用不同数量的参数?我在想,如果选择了 above 或 below,那么查询可以附加“AND t.value != 'NA'”。这也有助于有一个复选框,以允许或不允许用户根据以上/以下标准自行决定是否允许“NA”值。

最佳答案

您可以只添加一个额外的 WHERE 子句来过滤掉这些值。假设您的 NA 值存储为字符串 ('NA'),您可以像这样过滤掉它们:

SELECT t.column FROM table t WHERE t.value<> 'NA' AND t.value".$operator." ( ? );

如果您想在未检查的情况下显示 NA 值,您可以使用以下查询,当运算符设置为 LIKE 时忽略对 NA 的检查

SELECT t.column FROM table t WHERE (t.value <> 'NA' OR "$operator"="LIKE") AND t.value".$operator." ( ? );

编辑:根据 Steven 的评论,第二种方法不太有效,请参阅 Steven 自己的回答以了解正确的实现方法。

关于php - SQL 中的数学运算符不排除 "NA"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640689/

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