Как сделать SQL-запрос на основе некоторых правил

У меня есть эта HTML-форма, где у меня есть несколько входных элементов: текст, радио, и так далее. Они предназначаются, чтобы быть опциями, условные объекты для применения в SQL-запросе для получения по запросу более определенных данных из базы данных.

Например, первое поле ввода является текстовым полем, второе переключатель и третье ВЫБОР с помощью двух опций. С первым я добавил бы ПОДОБНОЕ %name предложение % в SQL-запросе. Второй является группа переключателей с, скажем, цвет, таким образом, я добавил бы ГДЕ цвет = $item, соответствующий один выбранный столбцу базы данных. Третье в значительной степени было бы точно так же, как второе.

Теперь, я предполагаю, что мог просто использовать, если предложения, сравнивающие эти три объекта, для знания, какой добавить к SQL-запросу, но мой вопрос: существует ли более умный способ сделать это? Как массив, проверяющий, установлены ли те переменные (я все еще использую если здесь, таким образом, nevermind).

Я время от времени программирую простые вещи, так как я никогда не делал ничего значительно сложного, но иногда, даже для простых вещей, неважно, как трудно я стремлюсь разработать что-то, я просто не могу.

В этом случае я действительно не могу фигурировать (вообразите, визуализируйте), как я структурировал бы код PHP наряду с SQL-запросом для добавления этих трех условий к оператору Where.

Я был бы очень признателен, если можно помочь мне здесь. При необходимости в большем количестве деталей просто сообщите мне.

1
задан hgulyan 23 August 2012 в 13:08
поделиться

2 ответа

Вы можете просто построить свой оператор sql прямо в процессе.

Простой пример:

$sql = "SELECT ... WHERE 1=1";      // 1=1 is just an example to get the WHERE out of the way

if (first condition / certain $_POST variable is set)
{
    $sql .= " AND LIKE %...%";
}
if (second condition)
{
    $sql .= " AND something=...";
}
// etc.

// run query
1
ответ дан 3 September 2019 в 00:15
поделиться

Просто для добавления другого решения я могу предложить вам использовать хранимую процедуру.

http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

http://www.brainbell.com/tutorials/MySQL/Using_Stored_Procedures.htm

Вам просто понадобится чтобы передать значения sp и сгенерировать внутри него условие where.

Есть еще одна возможность сгенерировать параметризованный запрос в PHP для предотвращения SQL-инъекций.

Вот несколько ссылок по этой теме.

http://us2.php.net/manual/en/security.database.php

http://www.roscripts.com/PHP_MySQL_by_examples-193.html

http: //www.webmasterworld .com / php / 3110596.htm

http://am.php.net/mysql_real_escape_string

1
ответ дан 3 September 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: