【问题标题】:Append condition to current query [duplicate]将条件附加到当前查询[重复]
【发布时间】:2018-03-02 00:30:43
【问题描述】:

例如,我们有一个mysqli 查询select

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

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

$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

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

我还想知道有没有办法通过prepared statments 做到这一点?

【问题讨论】:

标签: php mysqli


【解决方案1】:

很遗憾,对此的大多数答案都过于宽泛。没有正确或错误的方式,您已经逃脱了您的输入(这很棒)。

您可以考虑将您的 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[]

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2018-09-19
    • 2015-04-17
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2019-06-03
    • 2013-05-12
    • 2020-09-24
    相关资源
    最近更新 更多