Veneomin
@Veneomin

Как задать необязательные параметры в mysql?

connection.query('SELECT * FROM `mainreservation` WHERE `status`='+ arh +' AND from_who='+ who +' AND date='+ date +';', function(err, rows, fields) {
if (err) throw err;
})


В общем можно ли как-то задать в WHERE чтобы в случае если один из параметров не указан (ну или указан как "*") то выбирать все элементы? Что-то типа необязательного параметра, если есть то по нему выборка, если нету то выбирать все.
  • Вопрос задан
  • 1973 просмотра
Решения вопроса 1
@Joysi75
  1. Что мешает перед запросом проверить наличие параметра через if (или еще как) и в зависимости от наличия построить необходимый запрос ?
  2. Если только через SQL-выражение без применения if и т.п. и поле f1 в таблице строковое можно в запросе select * from t1 where ... and f1 like '%param%'
  3. Если поле f1 в таблице числовое то можно сколхозить через select * from t1 where ... and f1>=ifnull(param,минимально возможное значение столбца)

и т.п. с другими типами
Но во избежание ненужной загрузки для СУБД лучше строить правильный запрос.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@IceJOKER
Web/Android developer
нужно в ручную проверять есть такой параметр или нет, и если есть, то уже дополнить строку запроса.
$sql = 'select * from table where 1=1';

if($param1)
  $sql .= " AND param1=param1";
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
WHERE :param = '*' OR `param` = :param
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы