Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL запросы, выборка в пределах от ... до 
:(
    Опции темы
MuToGeN
Дата 21.8.2003, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



На подобный случай, кстати, есть функция print_r()


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Цитата
А как запрос выглядит, который в phpMyAdmin-e вводил?



SELECT * FROM resume WHERE lastname LIKE 'Морозов' and name LIKE 'Игорь' and town LIKE 'Москва' and (age BETWEEN '1' AND '100') ORDER BY `ID`
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Через print_r() тоже ничего не выводит!!!
PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Создал у себя табличку resume, ввел туда этого самого Игоря Морозова из Москвы, кинул твой запрос, MySQL ряд выбрала без проблем. Может, в самой MySQL какие проблемы... Я на линуховом сервере тестил.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 21.8.2003, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



У меня платформа под Win32, может в ней какой-то косяк?
PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Может быть, в версии MySQL под винды.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
MuToGeN
Дата 21.8.2003, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Модератор: перемещено в БД из PHP
Авось, там кто-нибудь что-нибудь подскажет...


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Vit
Дата 21.8.2003, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Age - должен быть без кавычек
Id - тоже должно быть без кавычек
Like - как ты его написал работать не будет(точнее будет работать не как LIKE, а как точное соответствие) - нужно поставить WildCard

В общем примерно так:

SELECT * FROM resume WHERE lastname LIKE '%Морозов%' and name LIKE '%Игорь%' and town LIKE '%Москва%' and (age BETWEEN 1 AND 100) ORDER BY ID




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
BlackHawk
Дата 21.8.2003, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Огромное тебе спасибо, Vit, ты абсолютно прав, не зря я грешил на синтаксис кавычек!
PM MAIL ICQ   Вверх
MuToGeN
Дата 22.8.2003, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Vit, BlackHawk, кстати говоря, я это дело тестил с age в кавычках - оно прекрасно работало. Может быть, дело в версиях MySQL...


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
Дата 22.8.2003, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Кстати говоря,

я уже склоняюсь ко мнению MuToGeN, мой MySQL что-то просто с ума сошел!
Вчера все работало просто трекрасно, но только без кавычек!
Сегодня и без кавычек уже не работает!!!

Выдает:
MySQL query error.
Query was:
SELECT * FROM resume WHERE lastname LIKE '%%' and name LIKE '%%' and town LIKE '%%' and another_town LIKE '%%' and chapter LIKE '%%' and job_title LIKE '%%' and sex LIKE '%%' and education LIKE '%%' and stage LIKE '%%' and work_grafic LIKE '%%' and employment LIKE '%%' and sitizenship LIKE '%%' and another_sitiz LIKE '%%' and address LIKE '%%' and (age BETWEEN AND ) and (payment BETWEEN AND '1000000') ORDER BY ID
MySQL returned:
1064: You have an error in your SQL syntax near 'AND ) and (payment BETWEEN AND '1000000') ORDER BY ID' at line 1

Я просто В ОСАДОК ВЫПАЛ!!!
Никак не пойму в чем же тут дело, может просто Денвер переставить?
PM MAIL ICQ   Вверх
Vit
Дата 22.8.2003, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Правильно говорит: (payment BETWEEN AND '1000000') - должно быть так

(payment BETWEEN 10 AND 1000000)


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 22.8.2003, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Цитата(MuToGeN @ 22.8.2003, 02:23)
Vit, BlackHawk, кстати говоря, я это дело тестил с age в кавычках - оно прекрасно работало. Может быть, дело в версиях MySQL...

Да работало, но сравнение строк и сравнение чисел это разные вещи

Для строки '001' и '100' значение '99' не входит в интервал, а если указывать без кавычек, т.е. сравнивать числа 99 будет входить. Кавычки придумали вовсе не для того чтобы путались, а для того чтобы отличать когда пишешь число 100 от строки '100' - если у тебя поле текстовое то надо писать в кавычках, а если поле типа int то надо писать без кавычек, если ты всё-таки возьмёшь в кавычки - то кверя работать будет и даже иногда будет давать правильные результаты, но это с 99% вероятностью источник ошибок, поэтому нельзя относится к расстоновке кавычек как простому требованию синтаксиса, кавычки несут смысловую нагрузку, и пока ты не начнёшь их употреблять обдуманно ты будешь получать неправильные результаты.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
MuToGeN
Дата 22.8.2003, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Vit, согдасен с тобой.
Цитата
Все отлично, MuToGen, работает просто прекрасно! Огромное тебе человеческое спасибо!!!
Код действительно довольно простой, но весьма эффективный, как все гениальное!!!

Но мне снова не дает покоя старый косяк! Это возвращаясь к вопросу о конструкции выборки с использованием BETWEEN, ситуация такова: если не брать переменные $age1 и $age2 в кавычки, то интерпретатор возвращает синтактическую ошибку типа:
Код

MySQL returned:
1064: You have an error in your SQL syntax near 'AND ) ORDER BY 'ID' LIMIT 0, 3' at line 1
,
а если заключить в кавычки, то возвращает нулевой результат.
Я по такому случаю переустановил MySQL v.4.0.3 for Win9X-XP, результат тот-же. Я в замешательстве!!!
Я же говорил - проверять надо запрос после подстановки значений. Тут явно видно, что он получается ... AND (age BETWEEN AND ) ORDER BY...
Короче, $age1 и $age2 - нулевые строки. Либо значения где-то теряются, либо просто не передаются при HTTP запросе.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
BlackHawk
  Дата 22.8.2003, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 15.8.2003

Репутация: нет
Всего: нет



Хорошо, Vit, я все отлично понял, что выражение помещенное в кавычки воспринимается как строка. Но когда в вышеуказанном запросе я убираю кавычки, вот что получается!
Код
MySQL returned:
1064: You have an error in your SQL syntax near 'AND ) ORDER BY ID LIMIT 3, 3' at line 1


Я никак не понимаю, в чем тут дело, ведь все же правильно!!!
Я уже и MySQL поставил v.4.0.3 - результат тот же!!!
Пробовал и под Win98 под WinXP - результат абсолютно одинаков. Может дело в чем-то другом.
Но самая главная странность в том, что вчера все отлично работало, а сегодня как я ни пытался ее оживить - безрезультатно!!!


PM MAIL ICQ   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.