Я пытаюсь построить запрос 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
Да, но и наоборот, если применимо, чтобы оно было динамическим: WHERE ((b NULL) AND (a = 10)) – Alex