PHP向准备好的语句附加条件

问题描述 投票:1回答:1

我正在尝试使用准备好的语句来搜索数据库,在该数据库中我不知道需要搜索多少个参数。因此,以下示例检查列“ title”是否包含两个变量

$stmt = $con->prepare("SELECT title FROM news WHERE title LIKE %?% AND title LIKE %?%");

如果我要检查第三个变量,该怎么办。我可以在准备好的陈述后附加吗?到目前为止,我唯一的解决方法如下,这很可怕,因为我不知道变量的最大数量。

$no_of_variables = 3;

if($no_of_variables == 1){
    $stmt = $con->prepare("SELECT title FROM news WHERE title LIKE %?%");
} else if($no_of_variables == 2){
    $stmt = $con->prepare("SELECT title FROM news WHERE title LIKE %?% AND title LIKE %?%");
} else if($no_of_variables == 3){
    //etc
}

如果可能的话,我希望使用更好的方法来使用更好的方法。谢谢

php mysqli prepared-statement
1个回答
1
投票

通过重复条件$no_of_variables-次来构造准备好的语句:

$where = implode(" AND ", array_fill(0, $no_of_variables, "title LIKE %?%"));
$stmt = $con->prepare("SELECT title FROM news WHERE {$where}");
© www.soinside.com 2019 - 2024. All rights reserved.