По сути вопроса уже ответили в комментариях:
if ($_SESSION['city']=='') {
// Поле пустое
} else {
// Поле заполненное
}
Лучше установить в БД city то поле равным пустой строке, а не NULL, чтобы путаницы не было. Тогда будет однозначное соответствие между базой данных и значением в поле.
Далее, советую в PHP использовать функции не mysql, а mysqli, которые в разы быстрее отрабатывают. Работает с той же базой данных mysql и по тем же запросам, только синтаксис функций немного другой. Бесплатно делюсь своей функцией для удобной работы:
$dbHost = 'localhost';
$dbName = '...';
$dbUser = 'root';
$dbPassword = '...';
$mysqli = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
if ($mysqli->connect_errno) {
echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$mysqli->set_charset("utf8");
mb_internal_encoding("UTF-8");
/**
* Выполнение запроса к MySQL
* @param string $query - запрос
* @param string $type - вариант выполнения функции
* "many" (по умолчанию) - для возврата нескольких строк. Возвращает двухмерный массив
* "one" - для возврата одной строки. Возвращает массив
* "count" - для возврата подсчёта количества строк. Возвращает число, записанное в строке
* "do" - для выполняемой команды. Возвращает true в случае успешного выполнения, в случае ошибки выдаёт текст ошибки.
* остальные - для возврата одного значения одной строки
* @return array|string|bool
*/
function query($query, $type="many") {
global $mysqli;
if (!$result = $mysqli->query($query)) {
return mysqli_error($mysqli);
}
if ($type == "do") {
return true;
}
$values = [];
while ($row = $result->fetch_assoc()) {
$values[] = $row;
}
$result->free();
if ($type == "count") {
return $values[0]["COUNT(*)"];
} elseif ($type == "one") {
return $values[0];
} elseif ($type == "many") {
return $values;
} else {
return $values[0][$type];
}
}