I hope this is something easy I am overlooking but here goes: I have a table called: country which has the following fields: Field Type ip_from double(11,0) ip_to double(11,0) country_code char(2) country_name varchar(50) IP_FROM NUMERICAL (DOUBLE) Beginning of IP address range. IP_TO NUMERICAL (DOUBLE) Ending of IP address range. COUNTRY_CODE CHAR(2) Two-character country code based on ISO 3166. COUNTRY_NAME VARCHAR(50) Country name based on ISO 31 Here are a few lines from the country table which starts at 33996344 and ends at : ip_from ip_to country_code country_name 33996344 33996351 GB UNITED KINGDOM 50331648 83886079 US UNITED STATES 94585424 94585439 SE SWEDEN <approx 65000 rows > 3714175488 3714175743 DK DENMARK 3715104768 3715629055 JP JAPAN 3717201920 3718840319 KR KOREA, REPUBLIC OF The IP_FROM and IP_TO fields of the database are numeric representations of the dotted IP address. The formula to convert an IP Address of the form A.B.C.D to an IP Number is: IP Number = A x (256*256*256) + B x (256*256) + C x 256 + D So here is what I do in PHP: $resolvingip=sprintf("%u",ip2long($ip)); $resolved=$DB_site->query_first("SELECT * FROM country WHERE '$resolvingip' BETWEEN ip_from AND ip_to"); $resolvecountry = $resolved[country_code]; so I type in: 213.21.158.96 and $resolvingip shows as: 3574963808 when I check $resolved[ip_from] I find out the SELECT statement looks up this line: 335544320 369098751 US UNITED STATES instead of looking up this line: 3574956032 3574972415 IT ITALY which really makes me think the SELECT statement is dropping the last digit... I tried ip: 10.25.215.30 and $resolvingip shows as 169465630 which looks up correctly since it is only 9 digits. When I try ip: 68.109.155.135 $resolvingip shows as 1148033927 but the SELECT statement drops the last digit and goes to a 9 digit again: 114803392 Any help is greatly appreciated.. Thanks! -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php