Как мне написать код, который строит запрос mysql в зависимости от того, какие значения имеют выпадающие списки?

Если в выпадающем списке ничего не выбрано, то значение выпадающего списка равно 001, поэтому запрос не должен включать этот выпадающий список в поиск!

Пожалуйста помоги...

У меня пока есть это:

            foreach($_GET as $key => $value) {
    if ($value != '001') {
                 Do something smart...like add to a query...
                     }
        }
0
user188971 13 Окт 2009 в 18:48
Что у вас есть до сих пор? Вы никому ничего не дали для работы... как выглядит ваш ручной запрос? как выглядит хтмл?
 – 
Jonathan Fingland
13 Окт 2009 в 18:50
1
Также почему это помечено Perl?
 – 
Jonathan Fingland
13 Окт 2009 в 18:52
Если вы явно установите для параметра значение «ничего» , тогда на сервер ничего не будет отправлено, если это поможет.
 – 
karim79
13 Окт 2009 в 18:55
Вы можете рассмотреть решения, подобные ORM, которые дают вам надлежащий уровень абстракции и позволяют вам достичь того, что вы просили (добавление элементов запроса) очень чистым способом.
 – 
Tadeck
29 Май 2011 в 02:22

2 ответа

Отправьте форму в файл PHP с именем (скажем) script.php с помощью метода GET (или POST, если хотите - в этом случае замените ссылки на GET ниже):

В script.php включите следующее:

<?php
if (!isset($_GET['yourdroplistname']) {
  $value = 001;
} else {
  $value = mysql_real_escape_string($_GET['yourdroplistname']);
}
mysql_query("YOUR QUERY, CONTAINING $value WHERE APPROPRIATE");
?>
1
Johan 29 Май 2011 в 02:18
1
Никогда не используйте прямой пользовательский ввод для создания необработанного SQL-запроса. Используйте переменную-заполнитель, экранируйте специальные символы в значении или приведите его к типу int, чтобы убедиться, что оно содержит число.
 – 
Lukáš Lalinský
13 Окт 2009 в 19:03

Я рекомендую использовать switch($droplist) для фильтрации того, что должен делать PHP.

switch($droplist)
case '1':
$query = 'SELECT 1 FROM xy WHERE userid = 1';
break;
case '2':
// etc.
0
Julius F 13 Окт 2009 в 18:55