Сегодня я спрошу простой (возможно, почти глупый вопрос) в соответствии с предложениями SQL.SQL с переменными условиями
Я имею дело с запросами SELECT, где у меня есть некоторые условия, но не всегда все из них. Я объясню пример.
Представьте простую таблицу Person [идентификатор, имя, фамилию]
Я хочу, чтобы получить идентификатор лица ... Я всегда буду просить имя, но не всегда прошу фамилии, поэтому запрос будет зависеть от параметров функции PHP ... запрос может быть:
SELECT id FROM Person where name = $name; (if parameter surname = null)
или SELECT id FROM Person where name = $name and surname = $surname;
(если параметр фамилия определяются)
у меня есть два кодов Возможных получить его, но я думаю, что он не оптимизирован
Вариант 1:
if ($surname) {
SELECT id FROM Person where name = $name and surname = $surname;
else{
SELECT id FROM Person where name = $name;
}
Вариант 2:
$sql = "SELECT id FROM Person where name = $name";
if ($surname) { $sql = $sql + " and surname = $surname"; }
Я думаю, что лучший вариант является вторым вариантом, а параметры могут увеличить, но я не знаю, если это может быть гибкий параметр, который вводится в запросе, зависит от нулевого параметра.
Извините за мой английский.
Большое спасибо.
'... name = $ name и ($ фамилия IS NULL или surname = $ surname)'. – jarlh
Лучшее решение состоит в том, чтобы использовать подготовленные заявления и код, отрезанный от @jarlh – Jens