2014-09-24 3 views
0

У меня есть 2 переменные в PHP (назовем их 'var1' и 'var2') и SQL команды, как это:Mysql ограничительный

$sql = "SELECT `id`, `name` FROM `table` WHERE `var` = '{$var1}'" 
if ($var2) { 
    $sql.= "AND `var`={$var2}"; } 

Переменная var1 она всегда устанавливается, но не var2. Я хочу, чтобы для var 2 было задано предложение WHERE только для var2. Это означает, что var2 более ограничительный, чем var1. Как я могу это сделать на языке SQL.

+0

Не уверен, что я понимаю, ваш код выглядит правильно. Вы хотите изменить на 'WHERE' 'var'' = '{$ var2}''? –

+0

Будьте в курсе внедрения SQL! – MrTux

+0

Он не указал ни одного пользователя, вызывающего беспокойство по поводу SQL-инъекции @MrTux –

ответ

2

Если я вас правильно понял вы хотите сделать это -

$sql = "SELECT `id`, `name` FROM `table` "; 
if($var2) { 
    $sql .= "WHERE `var` = '{$var2}'"; 
} else { 
    $sql .= "WHERE `var` = '{$var1}'"; 
} 

Если вы хотите сделать это только с помощью SQL вы бы использовать что-то вроде этого -

SELECT `id`, `name`, `variable` 
    CASE variable 
     WHEN 'var1' = variable THEN a = var1 
     WHEN 'var2' = variable THEN a = var2 
    END 
FROM `table` 
WHERE `foo` = a 

Не зная больше вашего кода или наличия пробных данных для работы с ним сложно разработать демо, но это должно заставить вас начать.

+0

Используйте CASE @Xatenev –

+0

, затем напишите его в ответ :) Прочтите вопрос осторожно, он написал «Как я могу это сделать в SQL-языке». – Xatenev

+0

Я не уверен, что он имел в виду, что буквально @ Xatenev :) Я спрошу в целях разъяснения. –

1
if ($var2) { 
    $sql = "SELECT `id`, `name` FROM `table` WHERE `var` = '{$var2}'"; 

} else { 
    $sql = "SELECT `id`, `name` FROM `table` WHERE `var` = '{$var1}'"; 
} 
+1

@ Sébastien он сделал, пока пользователь не отредактировал вопрос и добавил это предложение. Вместо того, чтобы прыгать на меня так, может быть, вы могли бы попытаться решить проблему? – 2014-09-24 17:57:33

+1

@ Xatenev эта строка была добавлена ​​после моего ответа. Спасибо за такую ​​полезную работу при комментировании. – 2014-09-24 17:58:47

+0

@Miche проблем нет! – Xatenev

Смежные вопросы