[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запросы в базу ничего не решают
lokoss
Столкнулся с непонятной для меня проблемой связанной с геолокацией (определением местонахождения по IP) при работе с базами IPInfoDB (примерно 300 мегабайт). Суть в том, что запросы даже в тупую скопированные с примера на сайте возвращают значение пустоты. Только если меняю в запросе знак <= (меньше или равно) на >= (больше или равно) то запрос удовлетворяется, но не правильно так как ищет он в обратном направлении и берёт другие значения.

Вопрос к Вам уважаемые: может у кого-что подобное было? в чём может быть загвоздка?

Благодарю!



Спустя 7 часов, 42 минуты, 27 секунд (12.07.2010 - 08:20) Basili4 написал(а):
Приведите используемый запрос так легче будет понять что с ним не так

Спустя 13 часов, 28 минут, 16 секунд (12.07.2010 - 21:48) lokoss написал(а):
SELECT * FROM `ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;

или
SELECT * FROM `ip_group_city` where `ip_start` <= 1249717604 order by ip_start desc limit 1;

должно выводить:
1249717504|US|United States|06|California|Mountain View|94043|37.4192|-122.057

и н-12 345 678-ное количество строк со значениями в базе.

Спустя 15 минут, 46 секунд (12.07.2010 - 22:04) Basili4 написал(а):
SELECT * FROM `ip_group_city` where `ip_start` <= 1249717604 по моему тут нужен такой запрос

Спустя 34 минуты, 39 секунд (12.07.2010 - 22:38) lokoss написал(а):
Цитата (Basili4 @ 12.07.2010 - 19:04)
SELECT * FROM `ip_group_city` where `ip_start` <= 1249717604 по моему тут нужен такой запрос

Так пробовал, пробовал даже через:
$country_query = "SELECT ЗНАЧЕНИЕ1,ЗНАЧЕНИЕ2,ЗНАЧЕНИЕ3 FROM ips ".
"WHERE baseip<=inet_aton('$ip')";
$exec = musql_query(query);
$array=mysql_fetch_array(exec);
$one=array['ЗНАЧЕНИЕ1'];
$two=array['ЗНАЧЕНИЕ2'];
$three=array['ЗНАЧЕНИЕ3'];
echo $one;
echo $two;
echo $three;

и прочие (перечислять думаю не имеет смысла) работающие запросы. За 5 дней перепробовал все имеющиеся в моём багаже по несколько раз. Может что-то с запросом в кэш базы??? просто без понятия в чём тут беда(((

Спустя 2 минуты, 49 секунд (12.07.2010 - 22:41) Basili4 написал(а):
$exec = musql_query(query) тут допиши or die (mysql_error());

смотри что выведет

Спустя 1 час, 12 минут, 54 секунды (12.07.2010 - 23:54) lokoss написал(а):
Цитата (Basili4 @ 12.07.2010 - 19:41)
$exec = musql_query(query) тут допиши or die (mysql_error());

смотри что выведет

Никаких ошибок, просто никаких значений. Может запрос просто прекращается по таймауту, хотя ничего не пишет?

Спустя 15 минут, 36 секунд (13.07.2010 - 00:10) Ice написал(а):
$exec = musql_query(query);
в скрипте написано именно так?

Спустя 20 минут, 28 секунд (13.07.2010 - 00:30) lokoss написал(а):
Цитата (Ice @ 12.07.2010 - 21:10)
<pre class="sh_sourceCode" rel="php"><span class="sh_variable">$exec</span> <span class="sh_symbol">=</span> <span class="sh_function">musql_query</span><span class="sh_symbol">(</span>query<span class="sh_symbol">);</span></pre> в скрипте написано именно так?

да, теперь с or die (mysql_error());
:
$country_query = "SELECT ЗНАЧЕНИЕ1,ЗНАЧЕНИЕ2,ЗНАЧЕНИЕ3 FROM ips ".
"WHERE baseip<=inet_aton('$ip')";
$exec = musql_query(query) or die (mysql_error());
$array=mysql_fetch_array(exec);
$one=array['ЗНАЧЕНИЕ1'];
$two=array['ЗНАЧЕНИЕ2'];
$three=array['ЗНАЧЕНИЕ3'];
echo $one;
echo $two;
echo $three;

Спустя 10 минут, 34 секунды (13.07.2010 - 00:41) Ice написал(а):
тогда, естественно, это - ошибка и даже не одна:

$exec = mysql_query($country_query) or die (mysql_error());
$array=mysql_fetch_assoc($exec);


* - явная ошибка
* - лучший вариант
* - возможно имелось ввиду

Спустя 23 минуты, 52 секунды (13.07.2010 - 01:05) lokoss написал(а):
Цитата (Ice @ 12.07.2010 - 21:41)
тогда, естественно, это - ошибка и даже не одна:

$exec = mysql_query($country_query) or die (mysql_error());
$array=mysql_fetch_assoc($exec);


* - явная ошибка
* - лучший вариант
* - возможно имелось ввиду

тогда, естественно, это - ошибка и даже не одна:

$exec = mysql_query($country_query) or die (mysql_error());
$array=mysql_fetch_assoc($exec);


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

Но тут на сколько я понимаю дело не только в этом коде. может у меня закомментированна важная функция для использования <,= и > ?

По коду предполагаю, что Вы уже сталкивались с геоIP? Если так, то думаю у Вас есть более продвинутый код который работает в условиях поиска городов по IP не между большим и меньшим IP, а по значению меньше или равно как указанно на сайте сборщика базы?

Спустя 27 минут, 8 секунд (13.07.2010 - 01:32) Ice написал(а):
Нет, с геоайпи я к сожалению (или к счастью) не сталкивался. Свои выводы я выстраивал исключительно на логическом изучении представленного Вами скрипта.

Спустя 8 часов, 36 минут, 23 секунды (13.07.2010 - 10:08) lokoss написал(а):
Цитата (Ice @ 12.07.2010 - 22:32)
Нет, с геоайпи я к сожалению (или к счастью) не сталкивался. Свои выводы я выстраивал исключительно на логическом изучении представленного Вами скрипта.

Вот бы ещё как -то узнать в чём тут загвоздка. Или нужно где-то применить(откомментировать): <= или не работает изза таймаута - я так думаю, но знать бы правду.

Спустя 3 минуты, 29 секунд (13.07.2010 - 10:12) DedMorozzz написал(а):
А какая БД? Мускул?

Спустя 1 час, 52 минуты, 17 секунд (13.07.2010 - 12:04) lokoss написал(а):
Цитата (DedMorozzz @ 13.07.2010 - 07:12)
А какая БД? Мускул?

Версия MySQL 5.1.36 на PHP 5.2.11:

port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

Может что прокачать можно в мускуле?

Целый день создавал запросы по другим параметрам в ту же базу и все они, даже самые косвенные - работают, так что может не в размере базы проблема?

Выходит кто бы помог сделать чтобы заработало: <= ? Больше винить тут нечего((
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.