我有一个 SQL 语句,我希望 WHERE 部分由调用函数动态填充。调用该语句的函数应该能够通过“OR”传递一个或多个参数。不幸的是,该语句始终只采用第一个条目。
$category = 'cat1' OR 'cat2' OR 'cat3';
$result = getEntries($category, $mysqli);
function getEntries($category, $mysqli){
$queryData = $mysqli->prepare("SELECT * FROM items WHERE category = ?");
$queryData->bind_param("s", $category);
$queryData->execute();
$queryData = $queryData->get_result();
return $queryData;
}
我只得到“cat1”的结果 感谢您的帮助
最佳答案
您正在使用OR运算符来分配一个变量,该变量一次分配一个值,如果您想要动态地分配类别数量,那么您可以修改代码,如下所示:
$categories = ['cat1','cat2','cat3'];
$result = getEntries($categories, $mysqli);
function getEntries($categories, $mysqli){
$plcs = implode(',',array_fill(0,count($categories)-1, "?");
$queryData = $mysqli->prepare("SELECT * FROM items WHERE category IN ({$plcs})");
$queryData->bind_param(str_repeat("s", count($categories)), ...$categories);
$queryData->execute();
return $queryData->get_result();
}
关于php - MySQL 中的多个Where 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59240285/