Условный MySQL WHERE Заявление

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

Вот где я сдался:

$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.

РЕДАКТИРОВАТЬ:

Это также ничего не стоит, что мне понадобится более 10 If-заявлений в этом ГДЕ

РЕДАКТИРОВАТЬ:

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

$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

Другие решения

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

SELECT * FROM Products WHERE brand IS NULL

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

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

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

0

По вопросам рекламы [email protected]