将条件附加到当前查询[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将条件附加到当前查询[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
例如,我们有mysqli
的select
查询:
$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进程