2014-11-13 4 views
0

Я пытаюсь написать заявление MySQL и расширенную панель поиска. По сути, мне нужно, чтобы он включал только разделы инструкции WHERE, если переменная не пустая.Conidtional MySQL WHERE Statement

Это где я отказался:

$sql = "SELECT * FROM Products WHERE if($brand != '', brand='$brand' AND, brand LIKE _%)"; 

Что-то вроде этого, что мне нужно:

SELECT * FROM Products WHERE (brand = variable)<-[ONLY IF VARIABLE IS NOT BLANK] 

Я действительно пытался воздержаться от бинарной системы с тысячами IF.

EDIT:

Стоит также ничего такого, что мне потребуется более 10 If-отчетность в рамках этого WHERE

EDIT:

Кроме того, переменная я проверяю, чтобы быть пустым хранится локально в PHP не на сервере MySQL. Для того, чтобы попытаться быть более конкретным, чтобы то, что я ищу:

$brand = "Samsung"; 
$sql = "SELECT * FROM Products WHERE [IF BRAND != NULL USE THIS STRING FOR WHERE STATEMENT -> brand='$brand'] [SECOND IF] [THIRD IF]"; 

ответ

0

Вы должны использовать PDO или MySQLi но ниже только, чтобы дать вам идею:

$query = " 
SELECT 
    * 
FROM 
    Products 
WHERE 
    1"; 

    if($brand != '') 
    { 
     $query .= " 
    AND brand = '" .$brand ."'"; 
    } 

    if($color != '') 
    { 
     $query .= " 
    AND color = '" .$color ."'"; 
    } 
+0

Это прекрасно работает! Благодаря! И я не беспокоюсь о безопасности этого, потому что это будет только я и несколько других менеджеров в моей компании, используя это в локальной сети. – WatsonB

+0

«не беспокоится о безопасности его» - это ужасно. Что, если кто-то подумает, что этот инструмент настолько велик, что они начинают делиться им с клиентами? Сделайте это правильно в первый раз. Никаких оправданий. – tadman

0

Это гораздо удобнее, если по «пустому» вы имеете в виду NULL:

SELECT * FROM Products WHERE brand IS NULL 

Если вы имеете дело с потенциально пустыми строками , то она выглядит следующим образом:

SELECT * FROM Products WHERE brand IS NULL OR brand='' 

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

+0

Правда, однако, что будет искать базу данных MySQL для NULL Brands. В то время как мне нужно проверить переменную в моем PHP-скрипте для NULL, и если это не NULL, чем включить этот фрагмент в Query. – WatsonB