我正在尝试使用准备好的语句来搜索数据库,在该数据库中我不知道需要搜索多少个参数。因此,以下示例检查列“ 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
}
如果可能的话,我希望使用更好的方法来使用更好的方法。谢谢
通过重复条件$no_of_variables
-次来构造准备好的语句:
$where = implode(" AND ", array_fill(0, $no_of_variables, "title LIKE %?%"));
$stmt = $con->prepare("SELECT title FROM news WHERE {$where}");