PHP 将条件附加到准备好的语句
PHP Appending criteria to a prepared statement
我正在尝试使用准备好的语句来搜索我不知道需要搜索多少参数的数据库。因此,以下示例检查列 '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}");
我正在尝试使用准备好的语句来搜索我不知道需要搜索多少参数的数据库。因此,以下示例检查列 '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}");