Php переменная ломает код если задано значение включающее AND

есть redbeanphp и такой код фильтрации данных (думаю с логикой понятно будет как работает):

// тут если передаются дополнительные фильтры - пишем их в поиск redbeanphp

if( $_POST['filter_area'] != '' ){ $f_area_s = 'AND id_area= ?'; $f_area_d = $_POST['filter_area'].","; }

// делаем поиск по базе и фильтруем, если есть фильтры выше (вывод только не удаленных)

$magazin = R::findAll('magazin ', 'id_city= ? '.$f_area_s.' AND deleted= ?', [$city_id, $f_area_d 0]);

вот мол не нравится такой вариант :

введите сюда описание изображения

как быть ? пробовал разные варианты, видимо тот самый не подобрал. прошу помочь :) фильтров много будет, хочу добавлять вариации которые выбирают в запрос по шаблону выше..

что пишет на выходе

<b>Parse error</b>: syntax error, unexpected '0' (T_CONSTANT_ENCAPSED_STRING), expecting ']'

Ответы (1 шт):

Автор решения: Mike

Можно поступить так:

$w = ['id_city=?', 'deleted=?'];
$v = [$city_id, 0];
if(isset($_POST['filter_area']) and $_POST['filter_area'] != '' ) {
    $w[] = 'id_area= ?'; $v[] = $_POST['filter_area'];
}
// Другие условия, добавляющие строки запросов в первый массив и подставляемые параметры во второй
$magazin = R::findAll('magazin ', implode(' AND ', $w), $v)
→ Ссылка