Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее / 10 сообщений из 10, страница 1 из 1
13.02.2016, 17:26
    #39170372
drey190684
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
Не нашел в интернете ответа, подскажите пожалуйста - Как сделать запрос выборки из БД по нескольким столбцам отсекая лишние данные
Есть БД с пользователями такая

ID ИМЯ ГОД РОЖДЕНИЯ ГОРОД
id FIRST_NAME BIRTHDAY_YEAR NAS_PUNKT
1 Михаил 1999 Москва
2 Иван 1984 Воронеж

- то есть если в поиске выбрали Михаил+Москва (сейчас выводиться правильно), а если выбрали Михаил+Воронеж - показывало что такого результата нет! то есть что в БД такая комбинация не найдена (т.е. нет пользователя с данными и имя-Михаил и город-Воронеж), а сейчас показывает и Михаила и Ивана т.к. при поиске у одного совпадает имя а у второго город, как это отфильтровать???


как выглядит форма поиска на сайте прилагаю

так вот делаю запрос к БД:
Код: sql
1.
2.
3.
4.
5.
SELECT *
    FROM USERS
    WHERE FIRST_NAME = '$first_name'
        OR NAS_PUNKT = '$city'
        OR BIRTHDAY_YEAR = '$birthday'


код ПХП
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
<?php
require '../database_connection.php';

if (!mysql_connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD)) {
    exit('Cannot connect to server');
}
if (!mysql_select_db(DATABASE_NAME)) {
    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'

";
$result = mysql_query($query) or die("Запрос ошибочный");
if (!$result) {
        echo "Could not successfully run query ($query) from DB: " . mysql_error();
        exit;
    }
    
    if (mysql_num_rows($result) == 0) {
        echo "Результаты по заданным параметрам не найдены!";
        exit;
    }
    while ($row = mysql_fetch_assoc($result)) 
    
    {
	printf("

<p>ФИО: " .$row['LAST_NAME'] . " " .$row['FIRST_NAME'] . " " .$row['MIDDLE_NAME'] . "  </p> 
<ul>
<li>Город: " .$row['NAS_PUNKT'] ." </li>
<li>Год рождения: " .$row['BIRTHDAY_YEAR'] ." </li>
</ul>

</div>
"
	);
}

?>


как сделать?
...
Рейтинг: 0 / 0
13.02.2016, 18:17
    #39170393
drey190684
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
покопавшись понял что нужен составной запрос, но как его сделать я пока не понимаю...
...
Рейтинг: 0 / 0
13.02.2016, 21:42
    #39170480
drey190684
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
может кто-то сможет расшифровать для меня то что мне написали на другом форуме?

авторсоставной запрос делается так - пишешь в переменную "заголовок" запроса, потом проверяешь ифами какие у тебя фильтры есть, накидываешь их к основному запросу с логикой и. и выполняешь полученный текста запроса.

??????????
...
Рейтинг: 0 / 0
13.02.2016, 23:47
    #39170544
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
drey190684,

Если ты не понимаешь, что тебе ответили, то уже никто не поможет. Вопрос вообще в форум по PHP скорее.
Тебе читать азбуку по логическим операторам.
...
Рейтинг: 0 / 0
14.02.2016, 00:16
    #39170562
drey190684
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
MikkiMouse,
ну хорошо у в таком виде что не так? почему не работает - выдает "Запрос ошибочный"?вроде сделал то что мне написали: IF - есть, новая переменная объединяющая условия выборки есть...

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<?php
require '../php_primer/database_connection.php';
if (!mysql_connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD)) {
    exit('Cannot connect to server');
}
if (!mysql_select_db(DATABASE_NAME)) {
    exit('Cannot select database');
}
{
$first_name = trim($_REQUEST['first_name']);
$nas_punct = trim($_REQUEST['nas_punct']);
$birthday = trim($_REQUEST['birthday']);
}
/* Выполнение SQL запроса */
$data = array();
 
if(!empty($_POST['first_name']))
$data[] = "`first_name`='".mysql_real_escape_string($_POST['first_name'])."'";
if(!empty($_POST['nas_punct']))
$data[] = "`nas_punct`='".mysql_real_escape_string($_POST['nas_punct'])."'";
if(!empty($_POST['birthday']))
$data[] = "`birthday`='".mysql_real_escape_string($_POST['birthday'])."'";
if(count($data) > 0)
{
   mysql_query(
              "SELECT `FIRST_NAME`, `NAS_PUNKT`, `BIRTHDAY_YEAR`
               FROM USERS
               WHERE ".implode(' AND ', $data)
               );
}
$result = mysql_query($data) or die("Запрос ошибочный");
if (!$result) {
        echo "Could not successfully run query ($data) from DB: " . mysql_error();
        exit;
    }
    if (mysql_num_rows($result) == 0) {
        echo "Результаты по заданным параметрам не найдены!";
        exit;
    }
    while ($row = mysql_fetch_assoc($result)) 
    {
	printf("

<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>
"
	);
}

?>
...
Рейтинг: 0 / 0
14.02.2016, 08:17
    #39170591
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
drey190684почему не работает - выдает "Запрос ошибочный"?

drey190684
Код: php
1.
2.
3.
4.
5.
   mysql_query(
              "SELECT `FIRST_NAME`, `NAS_PUNKT`, `BIRTHDAY_YEAR`
               FROM USERS
               WHERE ".implode(' AND ', $data)
               );

вы вот то, что унутре у мускл_квери, выведите (через echo или как-нибудь ещё) да посмотрите, что там неправильно
если сами не догадаетесь, то сюда запрос скопируйте - но именно запрос, а не код, его формирующий!
...
Рейтинг: 0 / 0
14.02.2016, 16:58
    #39170761
drey190684
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
tanglir,

в пхпмайадмин этот запрос работает, выдает естесственно пустой результат так как не знает что такое $data,
может проблема в массиве??????
...
Рейтинг: 0 / 0
15.02.2016, 07:15
    #39170972
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
drey190684,

читайте внимательно моё предыдущее сообщение
а когда поймёте, что там написано, сделайте как я сказал
...
Рейтинг: 0 / 0
15.02.2016, 15:55
    #39171466
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
drey190684может кто-то сможет расшифровать для меня то что мне написали на другом форуме?

авторсоставной запрос делается так - пишешь в переменную "заголовок" запроса, потом проверяешь ифами какие у тебя фильтры есть, накидываешь их к основному запросу с логикой и. и выполняешь полученный текста запроса.

??????????

Расшифровываю: они тебе написали какой-то бред.
...
Рейтинг: 0 / 0
15.02.2016, 22:37
    #39171850
drey190684
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
MasterZiv,

спасибо все сделал все работает)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]