powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
10 сообщений из 10, страница 1 из 1
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
    #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
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
    #39170393
drey190684
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
покопавшись понял что нужен составной запрос, но как его сделать я пока не понимаю...
...
Рейтинг: 0 / 0
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
    #39170480
drey190684
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может кто-то сможет расшифровать для меня то что мне написали на другом форуме?

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

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

Если ты не понимаешь, что тебе ответили, то уже никто не поможет. Вопрос вообще в форум по PHP скорее.
Тебе читать азбуку по логическим операторам.
...
Рейтинг: 0 / 0
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
    #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
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
    #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
Как сделать запрос выборки из БД по нескольким столбцам отсекая лишнее
    #39170761
drey190684
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

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

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

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

??????????

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

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


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