2013-07-10 9 views
0

Я пытаюсь построить запрос MySQL с использованием подготовленных выражений, которые будут игнорировать критерии, если для него установлено значение NULL. Например, в приведенном ниже примере, если $a = "" и $b = "10", я хочу, чтобы запрос возвращал все записи, где столбец b содержит значение 10 и игнорирует критерий a, поскольку в настоящее время запрос возвращает все записи, имеющие значение «column a» «" и значение столбца b '10 ".С PHP MYSQL Подготовленные утверждения и IFNULL(), чтобы возвращать все записи, если value = ""

if ($stmt = $mysqli->prepare("SELECT x, y FROM users WHERE a = IFNULL(?, %%) AND b = IFNULL(?, %%) AND ...")) { 
    $stmt->bind_param('ss...', $a, $b, ...); // Bind variables to parameter. 
    $stmt->execute(); // Execute the prepared query. 
    $stmt->store_result(); 
    } 

Что нужно заменить «%%», чтобы вернуть все, как если бы критерии не были установлены?

EDIT: Здесь найден ответ, который не использует подготовленные операторы, а вместо этого массив допустимых строк для защиты, чтобы остановить SQL-инъекции.

Multiple Dropdowns Dynamic Query AJAX PHP MySQL

ответ

-1

Вы имеете в виду

WHERE ((a IS NULL) AND (b = 10)) 

?

+0

Да, но и наоборот, если применимо, чтобы оно было динамическим: WHERE ((b NULL) AND (a = 10)) – Alex

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

  • Нет связанных вопросов^_^