Динамически сформировать текст и список параметров запроса, в зависимости от критериев:
$sql = "SELECT * FROM `shop` WHERE 1=1 "; // 1=1 - классическая заглушка, чтобы можно было удобно добавлять and.
$params = []; // заготовка под входные параметры запроса.
if(isset($_POST['criteria_1']) && $_POST['criteria_1'] == 'on') // выбрали нечто по первому критерию
{
// он проверяет только имя чего-то
$sql .= 'and `name` = :name ' // добавляем условие в текст запроса
$params['name'] = $_POST['name']; // добавляем параметры
}
if(isset($_POST['criteria_2']) && $_POST['criteria_2'] == 'on') // выбрали нечто по второму критерию
{
// он проверяет например, страну и город
$sql .= ' and `country` = :country
and `city` = :city ' // добавляем условие в текст запроса
$params['country'] = $_POST['country']; // добавляем параметры
$params['city'] = $_POST['city']; // добавляем параметры
}
$stmt = pdo()->prepare($sql);
$stmt->execute($params);
if ($stmt->rowCount() > 0) {
flash('Этот магазин уже существует.');
header('Location: addshop.php'); // Возврат на форму регистрации
die; // Остановка выполнения скрипта
}