将条件附加到当前查询[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将条件附加到当前查询[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

例如,我们有mysqliselect查询:

$sql = "SELECT * FROM table WHERE cat = 1";

并且想要基于query将一些额外的query string附加到上面的查询,我尝试过这样的事情:(这只是示例,而不是我的原始代码)

$keyw = $_GET["k"];

if($keyw){
$cleanKeyw = mysqli_real_escape_string($connection, $keyw);

$addQ= "AND name LIKE '%$cleanKeyw%' OR text LIKE '%$cleanKeyw%'";
} else {
$addQ= "";  
}

$sql = "SELECT * FROM table WHERE cat = 1 $addQ";

不是这一个,我几乎还有10个statment想要附加到当前的query

如果设置query查询字符串,我想添加k,它可以工作,但我想确定,这样做是否安全或正确?因为它是基于我的逻辑而且我是php的新手并且不知道有技术方法可以做到这一点吗?

另外我想知道有没有办法通过prepared statments这样做?

答案

不幸的是,大多数答案都过于宽泛。没有正确或错误的方式,你已经逃脱了你的投入(这很棒)。

您可以考虑将您的wheres构建为数组,然后将它们拼接在一起。

$wheres = [];

$wheres[] = 'cat = 1';

if ($keyw) {
    // escape etc
    $wheres[] = 'name LIKE '%$cleanKeyw%' OR text LIKE '%$cleanKeyw%''
}

$wheres = implode(" AND ", $wheres);

$sql = "SELECT * FROM table WHERE $wheres";

然后你可以随着时间的推移添加更多的$wheres[]

以上是关于将条件附加到当前查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

sql将数据从其他表附加到当前表的条件

如何将查询参数附加到现有 URL?

4.3 合并重复的条件执行片段

java.lang.IllegalStateException:片段未附加到活动

如何在Javascript中获取当前格式化日期dd/mm/yyyy并将其附加到输入[重复]