Lamento decirte que no puedes realizar tu cometido, las bases de datos por ip se basan en el proveedor que otorga dichas IPs y su localización, estas son asignadas en la mayoría de los casos dinamicamente, esto significa que cambian y por eso las bases gratuitas fallan, están desactualizadas para algo que esta en constante cambio.
Intenta usando
http://www.php.net/manual/es/intro.geoip.php aunque como te digo, es poco probable que puedas determinar con exactitud la geo localización. Por ejemplo, yo te escribo desde Buenos Aires, y me marca que estoy en Montevideo Uruguay.