Я пытаюсь написать 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]";
Вы должны использовать PDO
или же MySQLi
но ниже просто дать вам представление:
$query = "SELECT
*
FROM
Products
WHERE
1";
if( $brand != '' )
{
$query .= "AND brand = '" .$brand ."'";
}
if( $color != '' )
{
$query .= "AND color = '" .$color ."'";
}
Это гораздо удобнее, если вы имеете в виду «пустым» NULL
:
SELECT * FROM Products WHERE brand IS NULL
Если вы имеете дело с потенциально пустыми строками, то это выглядит так:
SELECT * FROM Products WHERE brand IS NULL OR brand=''
Если вы имеете дело с вещами, которые могут быть «парой пробелов, может быть, одна или две табуляции случайным образом», это может привести к путанице, поэтому вы можете захотеть обнулить любые данные в коде приложения, который вставляет это.