我想用多个过滤器获取内容,现在只有一个。 例如:
SELECT * FROM Table1 WHERE status=true AND category = 'Camera' AND model = 'Samsung' AND type = 'New'
我想为它创建一个数组。但由于我是这方面的新手,所以没有获得领先地位。
function getAllRequests($filter){
if(empty($filter)){
$addfilter = '';
}else{
$addfilter = 'AND cat_id=' . $filter;
}
}
$sql = 'SELECT * FROM Table1 WHERE status=true' . $filter;
我们将不胜感激。
最佳答案
这将使您更接近解决方案,尽管它不会替换查询中的 cat_id
,这肯定是错误的 - 尽管如果没有数组结构就不可能做太多:
function getAllRequests($filter)
{
$addfilter="";
if(!empty($filter))
{
foreach($filter as $val)
{
$addfilter. = ' AND cat_id=' . $val .'\'';
}
}
return $addFilter;
}
$myFilters=getAllRequests($filter);
$sql = 'SELECT * FROM Table1 WHERE status=true' . $myFilters;
另一方面,如果你的数组是这样构造的:
array{ category => camera, model => samsung); // etc
您可以使用以下内容:
function getAllRequests($filter)
{
$addfilter="";
if(!empty($filter))
{
foreach($filter as $key => $val)
{
$addfilter. = " AND `$key` = '$val'";
}
}
return $addFilter;
}
$myFilters=getAllRequests($filter);
$sql = 'SELECT * FROM Table1 WHERE status=true' . $myFilters;
编辑:您可以按以下方式遍历所有过滤器:
function getAllRequests()
{
$addfilter="";
if(!empty($_REQUEST))
{
foreach($_REQUEST as $key => $val)
{
$addfilter. = " AND `$key` = '$val'";
}
}
return $addFilter;
}
$myFilters=getAllRequests();
$sql = 'SELECT * FROM Table1 WHERE status=true' . $myFilters;
您不需要传递 $_REQUEST
(它适用于 GET 和 POST),因为它已经是超全局的。
关于php - 在 mysql 中使用 php 数组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599338/