Не нашел в интернете ответа, подскажите пожалуйста - Как сделать запрос выборки из БД по нескольким столбцам отсекая лишние данные -
Есть БД с пользователями такая
ID ИМЯ ГОД РОЖДЕНИЯ ГОРОД
id FIRST_NAME BIRTHDAY_YEAR NAS_PUNKT
1 Михаил 1999 Москва
2 Иван 1984 Воронеж
- то есть если в поиске выбрали Михаил+Москва (сейчас выводиться правильно), а если выбрали Михаил+Воронеж - показывало что такого результата нет! то есть что в БД такая комбинация не найдена (т.е. нет пользователя с данными и имя-Михаил и город-Воронеж), а сейчас показывает и Михаила и Ивана т.к. при поиске у одного совпадает имя а у второго город, как это отфильтровать???
как выглядит форма поиска на сайте прилагаю
так вот делаю запрос к БД:
код ПХП
PHP:
скопировать код в буфер обмена
<?PHP require '../database_connection.php'; if (!mysql_connect(DATABASE_HOST , DATABASE_USERNAME , DATABASE_PASSWORD )) { exit('Cannot connect to server'); } exit('Cannot select database'); } { $first_name = trim($_REQUEST['first_name']); $nas_punct = trim($_REQUEST['nas_punct']); $birthday = trim($_REQUEST['birthday']); } /* Выполнение SQL запроса */ $query = " SELECT * FROM USERS WHERE FIRST_NAME = '$first_name' OR NAS_PUNKT = '$nas_punct' OR BIRTHDAY_YEAR = '$birthday' "; if (!$result) { echo "Could not successfully run query ($query) from DB: " . mysql_error(); } echo "Результаты по заданным параметрам не найдены!"; } { <p>ФИО: " .$row['LAST_NAME'] . " " .$row['FIRST_NAME'] . " " .$row['MIDDLE_NAME'] . " </p> <ul> <li>Город: " .$row['NAS_PUNKT'] ." </li> <li>Год рождения: " .$row['BIRTHDAY_YEAR'] ." </li> </ul> </div> " ); } ?>
насколько я понял по тому что мне объясняли нужно правильно составить составной запрос написать в переменную "заголовок" запроса, потом проверить ифами какие у меня фильтры есть, накинуть их к основному запросу с логикой и. и выполнить полученный текста запроса - простыми словами объяснили но мне как новичку почти ничего не понятно
ну хорошо у в таком виде что не так? почему не работает - выдает "Запрос ошибочный"?вроде сделал то что мне написали: IF - есть, новая переменная объединяющая условия выборки есть...
PHP:
скопировать код в буфер обмена
<?PHP require '../php_primer/database_connection.php'; if (!mysql_connect(DATABASE_HOST , DATABASE_USERNAME , DATABASE_PASSWORD )) { exit('Cannot connect to server'); } exit('Cannot select database'); } { $first_name = trim($_REQUEST['first_name']); $nas_punct = trim($_REQUEST['nas_punct']); $birthday = trim($_REQUEST['birthday']); } /* Выполнение SQL запроса */ if(!empty($_POST['first_name'])) if(!empty($_POST['nas_punct'])) if(!empty($_POST['birthday'])) { "SELECT `FIRST_NAME`, `NAS_PUNKT`, `BIRTHDAY_YEAR` FROM USERS ); } if (!$result) { echo "Could not successfully run query ($data) from DB: " . mysql_error(); } echo "Результаты по заданным параметрам не найдены!"; } { <p>ФИО: " .$row['LAST_NAME'] . " " .$row['FIRST_NAME'] . " " .$row['MIDDLE_NAME'] . " </p> <ul> <li>Город: " .$row['NAS_PUNKT'] ." </li> <li>Год рождения: " .$row['BIRTHDAY_YEAR'] ." </li> <li>Дом.телефон: " .$row['PHONE_1'] ." </li> <li>E-mail: " .$row['EMAIL'] ." </li> </ul> " ); } ?>
(Отредактировано автором: 13 Февраля, 2016 - 23:24:34)
|