2014-03-07 5 views
0

200,000 개 이상의 행으로 구성된 거대한 데이터베이스가 있습니다. 문제는 제가 loaclhost에서 실행 중일 때마다 정확한 결과를 보여 주지만 언제나 그렇습니다. 문제는 다음과 같습니다데이터베이스에서 데이터를 찾을 수 없습니다

이 어떤 결과를 그리워 서버 .. ...는 출력을 보여줍니다 지금까지 난 내 로컬 호스트에 IP를 입력

에서

하지만 난 동일한 IP에서 실행 할 때마다 서버에 결과가 표시되지 않습니다.

내 서버에 대한 링크는입니다. 쿼리 코드는 다음과 같습니다 986,

..

<?php 
if(isset($_REQUEST['submit'])) 
{ 
$ip = ip2long($_REQUEST['ip']); 

$res = mysql_query("SELECT * from ip2country WHERE $ip BETWEEN begin_long_ip AND end_long_ip") or die(mysql_error()); 
$row = mysql_fetch_array($res); 
echo "<h1>Country Name : ".$row['country_name']."</h1><br />"; 
echo "<h1>Country Code : ".$row['country_code']."</h1><br />"; 

$res1 = mysql_query("SELECT COUNT(*) AS Total FROM ip2country") or die(mysql_error()); 
$row1 = mysql_fetch_array($res1); 
echo $row1['Total']; 

} 

?>

어떤 도움이 크게 감사합니다는 ...

당신은 내 코멘트를하지 않았다
+1

'ip'는 숫자가 아닙니다. 맞습니까? 그렇게 사이에 '사이'를 사용할 수는 없습니다. –

+1

juergen, 그가'long '으로'$ ip = ip2long ($ _REQUEST ['ip ']);와 같이 변환 된 것 같습니다. Subhomoy, 당신은'error_reporting (E_ALL)'과'ini_set ('display_errors', 1)'을 가지고 있습니까? 보십시오''그리고 mysql 확장이 서버에로드되어 있는지 확인한다. 또한 mysql_ *는 더 이상 사용되지 않으므로 대신 mysqli 또는 PDO를 사용해야합니다. – Matt

+0

ip를 번호로 변환하기 위해 ip2long 함수를 사용했습니다 ... –

답변

0

, 그래서 여기에 대한 설명입니다 . 그 페이지에 불쾌한 오류가 표시하는 것은 어렵지 않아 :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWEEN begin_long_ip AND end_long_ip' at line 1

및 그 쿼리가 잘못 bacause이다

:

SELECT * from ip2country WHERE $ip BETWEEN begin_long_ip AND end_long_ip

당신은 다음과 같이 변경한다 SELECT * from ip2country WHERE $ip > begin_long_ip AND $ip < end_long_ip

추신. mysql_ * 함수는 더 이상 사용되지 않으므로 더 이상 사용하지 않아야합니다. 대신 Mysqli/PDO를 사용해보십시오.

+0

내가 아는 한, 그들은 모두 똑같이 작동합니다 ... http : //www.w3schools.com/sql/sql_between.asp –

+0

나는 장님 일지 모르지만 값 사이에 열 이름을 사용할 수있는 부분을 볼 수는 없다 ... – MSadura

+0

내가 실수 한 것일 수도 있지만 어떻게 작동하지 않을 수 있는가? 내 로컬 호스트에서 잘 ... 어떤 오류도없이 완벽하게 작동합니다 ... 어떻게이게 가능할까요? –

관련 문제