У меня есть эта HTML-форма, где у меня есть несколько входных элементов: текст, радио, и так далее. Они предназначаются, чтобы быть опциями, условные объекты для применения в SQL-запросе для получения по запросу более определенных данных из базы данных.
Например, первое поле ввода является текстовым полем, второе переключатель и третье ВЫБОР с помощью двух опций. С первым я добавил бы ПОДОБНОЕ %name предложение % в SQL-запросе. Второй является группа переключателей с, скажем, цвет, таким образом, я добавил бы ГДЕ цвет = $item, соответствующий один выбранный столбцу базы данных. Третье в значительной степени было бы точно так же, как второе.
Теперь, я предполагаю, что мог просто использовать, если предложения, сравнивающие эти три объекта, для знания, какой добавить к SQL-запросу, но мой вопрос: существует ли более умный способ сделать это? Как массив, проверяющий, установлены ли те переменные (я все еще использую если здесь, таким образом, nevermind).
Я время от времени программирую простые вещи, так как я никогда не делал ничего значительно сложного, но иногда, даже для простых вещей, неважно, как трудно я стремлюсь разработать что-то, я просто не могу.
В этом случае я действительно не могу фигурировать (вообразите, визуализируйте), как я структурировал бы код PHP наряду с SQL-запросом для добавления этих трех условий к оператору Where.
Я был бы очень признателен, если можно помочь мне здесь. При необходимости в большем количестве деталей просто сообщите мне.
Вы можете просто построить свой оператор 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
Просто для добавления другого решения я могу предложить вам использовать хранимую процедуру.
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