これにより、ソリューションに近づくことができますが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の両方で機能します)を渡す必要はありません。