Гриша сказал: выводит только по первому полю - gorod, а остальное все не видит
Если остальные переменные пустые, то это не самый лучший вариант, правильнее будет формировать однозначный SQL запрос, а вот уже для его формирования включить механизм проверки переменных. Если данные приходят из POST, то можно сделать такой цикл для формирования массива значений и последующего сбора из него условий для SQL запроса.
<?php
$post = array('gorod', 'rod_deyat', 'kachvo');
$aAND = array();
foreach ($post as $value) {
if (!empty($_POST[$value])) {
$aAND[] = '`' . $value . '` = "' . addslashes($_POST[$value]) . '"';
}
}
if (count($aAND) > 0) {
$sql = 'SELECT `id`, `name_postav`, `gorod`, `data_zapolnen` FROM `anketa`
WHERE ' . implode(' AND ', $aAND);
}
?>
В данном примере есть одна особенность, в переменной $post содержатся имена полей таблицы anketa и они должны быть идентичны элементам POST массива, то есть, поле gorod в БД соотносится с переменной $_POST['gorod'] передаваемой из формы.