Здравствуйте подскажите не работает WHERE в запросе SQL, задача на сайте есть поле поиска по заданным параметра например - Имя и город есть 2 таблицы в БД, USERS и CITY, в MySQL они объеденные по внешним ключам то есть в таблице USERS есть поле CITY которое должно браться из таблицы CITY делаю запрос из PHP формы поиска к БД для выборки: Код (PHP): $query = " SELECT u.*, c.* FROM USERS u INNER JOIN CITY c ON c.idCITY = u.CITY WHERE u.FIRST_NAME LIKE 'first_name' AND CITY LIKE 'city' "; так вот сам запрос без WHERE работает, но показывает всех юзеров (из таблицы USERS) у которых поле CITY не NULL, а вот когда пытаюсь задать WHERE - пишет ошибку результаты не найдены, в чем может быть причина??? в итоге необходимо чтоб было 2 поля для поиска - имя и город которые в разных таблицах, и чтоб искалось при заполнении любого поля. Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
ничего стремного. ищется строковый эквивалент в ячейке алиаснутой таблицы. все ок. проблема не там а в районе CITY
Ganzal, мне кажется человек просто не понимает конструкцию LIKE... возможно он ожидает одного, а результат отличный он нужного... Хотя кто его знает... посмотрим... ((
подождем тогда... мне уже тоже стало интересно ( буду долга ржать, если очередной раз чуйка меня не подведет ((
таблица USERS в ней есть поля idUSERS и CITY, таблица CITY в ней поля idCITY и CITY_NAME, столбец CITY связан первичным ключом с таблицей CITY, форме поска: Код (PHP): Имя: <input type="text" name="first_name" id="query_text" size="60" value=""> <select name="city" value="0"> <option value="0">Город</option> <option value="1">Москва</option> <option value="2">Зеленоград</option> вот эти значения из name="first_name" и name="city" и передаются в ПХП Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
это похоже хоть как-то на структуру таблиц? не знаешь что такое структура таблиц - спроси. не знаешь как выводить структуру таблиц - спроси. ты дал код который решению задачи поможет так как как если я сейчас встану и пойду покурить. короче. ливаю я из треда. у тебя айдисити в таблице сити и ты ищешь по полю сити предполагая наверное что оно в таблице сити. но по твоему правилу объединения таблиц - в таблице юзерс тоже есть поле сити. возникает неоднозначность имени поля. потому как возможно (это лишь предположение) у тебя сити в юзерс - айдишник, а сити в ситис - строка.
хорошо спрошу тупой вопрос - и?)))))))))) если ты про вот это Код (PHP): AND CITY LIKE 'city' то да у меня из формы ж name="city" передается в ПХП?или я не о том? Код (PHP): <select name="city" value="0"> <option value="0">Город</option> <option value="1">Москва</option> <option value="2">Зеленоград</option> </select>
ты сам себя запутал. если ты по айдишнику города решил искать - там должна быть цифра. а если по названию - там должно быть другое поле.
это для людей то что отображается на сайте в форме, а в пхп передается id1 или id2 Код (PHP): <select name="city" value="0"> <option value="0">Город</option> <option value="1">Москва</option> <option value="2">Зеленоград</option> </select> Добавлено спустя 3 минуты 23 секунды: так работает Код (PHP): WHERE u.FIRST_NAME LIKE 'Андрей' а так нет Код (PHP): WHERE u.FIRST_NAME LIKE 'Андрей' AND c.idCITY LIKE 'city'
)))))))))))я тока начал учиться)))а сроки горят как обычно Код (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 запроса */ $query = " SELECT u.*, c.* FROM USERS u INNER JOIN CITY c ON c.idCITY = u.CITY WHERE u.FIRST_NAME LIKE 'first_name' AND c.idCITY = 'city' "; $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(" <h2 style='font-size: 25px;margin-bottom: 10px;'>ФИО: " .$row['FIRST_NAME'] . " " .$row['LAST_NAME'] . "</h2> <h3>Город: " .$row['CITY_NAME'] ." </h3> <h3>Телефон 1: " .$row['BIRTHDAY'] ." </h3> <h3 style='font-size: 18px;margin-top: -50px;'><a href='../php_primer/show_user222.php?USER_ID=" .$row['USER_ID'] . "'>Посмотреть проект полностью</a></h3> ---------<br/> " ); } ?>
остановись и начни учиться заново. я такого использования printf еще никогда не видел... в общем. код нам говорит ровно то же что и было раньше. ты ищешь строку (составленную из букв, понимаешь? не тупи больше) c, i, t и y в поле которое согласно твоей же архитектуре принимает целочисленное значение. то есть чтоб искать по этому полю - туда надо циферку подставлять. понимаешь? 1, 3 и так далее. абрянс если ты хочешь искать строку с называнием города - сравнивать её надо не с идентификатором города а с названием. понимаешь? с названием. москва, зеленоград. названия. но они-то у тебя в другом поле лежат. понимаешь?
- так у меня ж из формы поиска в пхп передается 1 или 2 а не имя города да если убираю Код (PHP): u.FIRST_NAME LIKE 'first_name' и оставляю Код (PHP): CITY LIKE '1' тогда конечно работает, а вместе никак и зачем мне вручную вставленная 1?
вот так Код (PHP): CITY LIKE '1' показывает Москву, если вот так Код (PHP): WHERE u.FIRST_NAME LIKE 'first_name' AND CITY LIKE 'city' то выдает ошибку которая в коде пхп Код (PHP): if (mysql_num_rows($result) == 0) { echo "Результаты по заданным параметрам не найдены!"; exit; } тоесть работает только когда Код (PHP): u.FIRST_NAME LIKE 'Андрей' или CITY LIKE '1' а данные из поиска как будто не приходят