Функция поиска с несколькими критериями - PHP / MySQL - PullRequest
2 голосов
/ 17 мая 2011

Как мне создать страницу поиска с несколькими критериями, где должен быть проверен хотя бы один критерий.

Структура таблицы

  • ID [pk]
  • Имя
  • Пол
  • Расположение

Я хочу создать форму поиска, где пользователь сможет искать по имени или по имени, полу или по имени, полу, местоположению или любой подобной комбинации среди [имя, пол, местоположение]

Как оформить запрос?

Edit
я не прошу проверить, по крайней мере, один параметр имеет значение [js validation], я прошу запрос!
Я буду использовать mysqli подготовленный оператор !

1 Ответ

2 голосов
/ 17 мая 2011

Вы можете проверить, является ли сообщение для определенного поля пустым, если нет, то добавьте соответствующее предложение WHERE к запросу.Что-то в виде следующего:

$mysqli = new mysqli(...);
$sql = 'SELECT * FROM table WHERE ';
$where = array();
$values = array();
$types = '';

if (!empty($_POST['name'])) {
    $where[] = 'name = ?';
    $values[] = $_POST['name'];
    $types .= 's';
}

if (!empty($_POST['sex'])) {
    $where[] = 'sex = ?';
    $values[] = $_POST['sex'];
    $types .= 's';
}
...
$sql .= implode(' AND ',$where);
$values = array_unshift($values, $types);

$statement = $mysqli->prepare($sql);
call_user_func_array(array($statement, 'bind_param'), $values);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...