Это общая тема с запросами к базе данных - вам нужен переменный запрос в зависимости от того, какую фильтрацию вы хотите применить к запрашиваемым данным. Вы можете пойти по пути повторения вашего запроса в виде строки по всему коду, но это плохая практика, так как она без необходимости увеличивает сложность кода. Возможны ошибки, если вам по какой-то причине необходимо изменить запрос и в результате изменить его в нескольких местах.
Лучшее решение - создать функцию, которая создает запрос, который вы выполняете:
function buildMyQuery($name, $order = null) {
$sql = "SELECT `id` FROM `table` WHERE `name`='$name'";
if ($order != null) {
$sql .= " AND `order`='$order'";
}
return $sql;
}
Затем вы можете запустить это, просто используя поле 'name':
$query = buildMyQuery("somename");
Или это для использования обоих полей:
$query = buildMyQuery("somename", "someorder");
Как уже упоминалось выше, этот код намеренно упрощен и не содержит непредвиденных обстоятельств для потенциально опасных данных, передаваемых через $ name или $ order. Вам нужно будет использовать mysql_real_escape_string или что-то подобное, чтобы сначала очистить данные, в начале функции перед тем, как использовать какой-либо фрагмент данных.
Генерация динамических запросов - это факт жизни, как говорит Байрон, поэтому я привык бы к этому сейчас, а не использую обходные пути.