с кодом: Код (PHP): <?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'); } /* Выполнение SQL запроса */ $data = array(); if(!empty($_REQUEST['first_name'])) $data[] = "'first_name'='".($_REQUEST['first_name'])."'"; if(!empty($_REQUEST['nas_punct'])) $data[] = "'nas_punct'='".($_REQUEST['nas_punct'])."'"; if(!empty($_REQUEST['birthday'])) $data[] = "'birthday'='".($_REQUEST['birthday'])."'"; if(count($data) > 0) { mysql_query( "SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE '.implode(' AND ', $data)" ); } echo $data; var_dump($data); print_r($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)) { echo(" <p style='font-size: 25px;margin-bottom: 10px;'>ФИО: " .$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> </ul> <p style='font-size: 18px;margin-top: 0px;'><a href='../php_primer/show_user222.php?idUSERS=" .$row['idUSERS'] . "'>Посмотреть проект полностью</a></p> ---------<br/> " ); } ?> выдает такое: Код (PHP): Arrayarray(3) { [0]=> string(27) "'first_name'='Михаил'" [1]=> string(26) "'nas_punct'='Москва'" [2]=> string(17) "'birthday'='1999'" } Array ( [0] => 'first_name'='Михаил' [1] => 'nas_punct'='Москва' [2] => 'birthday'='1999' ) Запрос ошибочный это то что нужно??? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Re: Как сделать запрос выборки из БД по нескольким столбцам ты должен посмотреть текст запроса, который получается, после того, как выполнится твой код. Текст запроса, который отправится в бд. Ты должен узнать, какой запрос получает бд. Тогда станет понятно, что не так.
Re: Как сделать запрос выборки из БД по нескольким столбцам drey19061984 http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html
вот такой код Код (PHP): /* Выполнение SQL запроса */ $data = array(); if(!empty($_REQUEST['first_name'])) $data[] = "FIRST_NAME='".($_REQUEST['first_name'])."'"; if(!empty($_REQUEST['nas_punct'])) $data[] = "NAS_PUNKT='".($_REQUEST['nas_punct'])."'"; if(!empty($_REQUEST['birthday'])) $data[] = "BIRTHDAY_YEAR='".($_REQUEST['birthday'])."'"; if(count($data) > 0) { mysql_query( "SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE ".implode(' AND ', $data) ); } $query = "SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE ".implode(' AND ', $data); echo $query; // чтоб посмотреть что передается $result = mysql_query($data) or die(mysql_error()); дает Код (PHP): SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE FIRST_NAME='Михаил' AND NAS_PUNKT='Москва' AND BIRTHDAY_YEAR='1999' это то??? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Re: Как сделать запрос выборки из БД по нескольким столбцам то! =) Ура. Теперь в пма воткни это и смотри ошибку. Для начала названия полей и таблиц все должны быть в обратных кавычках, чтобы не путать мускул. Год рождения наверное имеет смысл сделать числом а не строкой.
ааааааааааааааа люди добрые! подскажите совсем чуть чуть - получается так - с кодом Код (PHP): <?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'); } /* Выполнение SQL запроса */ $data = array(); if(!empty($_REQUEST['first_name'])) $data[] = "FIRST_NAME='".($_REQUEST['first_name'])."'"; if(!empty($_REQUEST['nas_punct'])) $data[] = "NAS_PUNKT='".($_REQUEST['nas_punct'])."'"; if(!empty($_REQUEST['birthday'])) $data[] = "BIRTHDAY_YEAR='".($_REQUEST['birthday'])."'"; if(count($data) > 0) { mysql_query( "SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE ".implode(' AND ', $data) ); } $query = "SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE ".implode(' AND ', $data); echo $query; // чтоб посмотреть что передается $result = mysql_query($query) or die(mysql_error()); 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 style='font-size: 25px;margin-bottom: 10px;'>ФИО: " .$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> </ul> <p style='font-size: 18px;margin-top: 0px;'><a href='../php_primer/show_user222.php?idUSERS=" .$row['idUSERS'] . "'>Посмотреть проект полностью</a></p> ---------<br/> " ); } ?> выдает поисковые результаты правильно т.е. в БД есть Михаил-Москва-1999 года рождения - если выбираю Михаил-Москва или Москва-1999 то выдается правильно 1 результат т.к. одно совпадение по БД, или Михаил-Воронеж - такие результаты не найдены - НО!!! не показывает сами выбранные поля т.е. имя - Михаил и другие данные т.е. выдает так Код (PHP): SELECT 'FIRST_NAME', 'NAS_PUNKT', 'BIRTHDAY_YEAR' FROM USERS WHERE FIRST_NAME='Михаил' AND NAS_PUNKT='Москва' AND BIRTHDAY_YEAR='1999' ФИО: FIRST_NAME Город: NAS_PUNKT Год рождения: BIRTHDAY_YEAR Дом.телефон: Посмотреть проект полностью как поправить?помогите чутьчуть осталось!!!!!!!!!!!!!!!!! Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Re: Как сделать запрос выборки из БД по нескольким столбцам в SELECT перечисли нужные тебе поля... или укажи SELECT * - все поля выведутся ((
ура товарищи УРА!!!!!! теперь с кодом: Код (PHP): <?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'); } /* Выполнение SQL запроса */ $data = array(); if(!empty($_REQUEST['first_name'])) $data[] = "`FIRST_NAME`='".($_REQUEST['first_name'])."'"; if(!empty($_REQUEST['nas_punct'])) $data[] = "`NAS_PUNKT`='".($_REQUEST['nas_punct'])."'"; if(!empty($_REQUEST['birthday'])) $data[] = "`BIRTHDAY_YEAR`='".($_REQUEST['birthday'])."'"; if(count($data) > 0) { mysql_query( "SELECT * FROM `USERS` WHERE ".implode(' AND ', $data) ); } $query = "SELECT * FROM `USERS` WHERE ".implode(' AND ', $data); $result = mysql_query($query) or die(mysql_error()); 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 style='font-size: 25px;margin-bottom: 10px;'>ФИО: " .$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> </ul> <p><a href='../php_primer/show_user222.php?idUSERS=" .$row['idUSERS'] . "'>Посмотреть проект полностью</a></p> ---------<br/> " ); } ?> ВСЕ РАБОТАЕТ!!!ДЛЯ ВАС КАК ДЛЯ ПРОФИ ЭТО МЕЛОЧЬ А ДЛЯ МЕНЯ ЧИСТЫЙ КАЙФ)))) P.S.: ОСОБЫЕ БЛАГОДАРНОСТИ: igordata - за терпение и тычки в правильную сторону, и Ganzal - за помощь и направление в нужную сторону в начале темы)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) Добавлено спустя 10 минут 48 секунд: Re: Как сделать запрос выборки из БД по нескольким столбцам отсе блин только если все поля пустые то выдает Код (PHP): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2 (((((((((((((((((((((((((( Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Re: Как сделать запрос выборки из БД по нескольким столбцам ребят - сочувствую помогите уже парню....
Re: Как сделать запрос выборки из БД по нескольким столбцам ахах ну хватит стебаться то уже - первая рабочая программа же))))))))))))))))))))))))))))))))))) я ж от чистого сердца!
Re: Как сделать запрос выборки из БД по нескольким столбцам названия полей обрамляются не апострофами (') а грависами (`). строки в свою очередь в большинстве реализаций языка структурированных запросов обрамляются апострофами (')
Re: Как сделать запрос выборки из БД по нескольким столбцам программист программистом, а явно данный алгоритм перековеркал. ну прям в лицо мне плюнул ((((
Re: Как сделать запрос выборки из БД по нескольким столбцам а что не так то? сделал вроде так как ты написал, сделал как мог, собрал инфу где смог - я ж писал что с нуля учить некогда))) ну извиняюсь если что...сделал в меру своего понимания...главное что работает)
Re: Как сделать запрос выборки из БД по нескольким столбцам неплохо ж вышло для первого раза. Очень даже.
Re: Как сделать запрос выборки из БД по нескольким столбцам вашими молитвами)))))))))))и подсказками...
я вот про это. ты собрал массив. и правильно собрал. и потом проверил его наполненность. допустим правильно проверил (ниже). и потом сделал запрос... вникуда. а потом уже вне условия длины массива ты... снова собираешь запрос и выполняешь его. а ты не задумывался что если в массиве ничего не будет то у тебя имплод будет пустым и запрос завершится словом WHERE и кажется станет инвалидным? Код (PHP): $query = "select * from table"; // объявил "заголовок" запроса $data = []; // объявил пустой массив-накопитель для фильтров // пихаешь по условиям в дейту как ты уже делал. а потом: if (!empty($data)) { // если есть что-то в массиве. да, совсем не надо получать кол-во элементов и совсем не надо сверять это кол-во с нулём $query .= "WHERE " . implode(' AND ', $data); // конкатенация условия к запросу } // конец ветки условия таким образом если условий в дейте не будет то ты получишь просто запрос выборки всех строк. а если будет - дополненный через вэр список фильтров.
эмммммммммммммм........ тоесть ты о том что Код (PHP): { mysql_query( "SELECT * FROM `USERS` WHERE ".implode(' AND ', $data) ); } можно просто выкинуть? Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
Re: Как сделать запрос выборки из БД по нескольким столбцам я один раз написал алгоритм русскими словами. один раз написал сраный готовый алгоритм сраным пхп-кодом со сраными комментариями. ты в первый раз понял как понял и написал как написал после чего я собственно указал что не так и дал сраный готовый сраный пхп-код со сраными комментариями. а ты и снова задаешь какие-то непонятные мне вопросы. ты продолжаешь плевать мне в лицо?
Re: Как сделать запрос выборки из БД по нескольким столбцам судя по тому что после того как выкинул поиск все равно работает думаю можно)