Как вставить переменные в sql запрос на php?
Только. Через. Плесхолдеры.
Любой, кто отвечает иначе - тупой нуб, застрявший в прошлом веке и так и не осиливший даже азы программирования.
Соответственно, тебе нужна библиотека, которая поддерживает плейсхолдеры. Хотя старушку mysql ext можно заставить, но для новичка лучше всего подойдет PDO.
$sql = "SELECT * FROM mytable WHERE city = ? AND price BETWEEN ? AND ? AND type = 'Продать'";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_POST['city'], $_POST['area'], $_POST['price']-50, $_POST['price']+50]);
$data = $stmt->fetchAll();
Как соединяться с БД и вообще про PDO читай здесь:
phpfaq.ru/pdo
А твоя ошибка вызвана опечаткой и неправильной обработкой ошибок.
Во-первых, у тебя в какой-то из запросов передается пустая строка - скорее всего, из-за опечатки
Во-вторых, если бы в РНР было включено нормальное отображение ошибок, то РНР тебе бы сам ругнулся на эту опечатку.
В-третьих, если бы ошибки mysql обрабатывались по-человечески, то РНР тоже указал бы на тот конкретный запрос, который оказался пустым. И ты бы не хватался вместо него за первый попавшийся.