2012-02-25 43 views
0

我有SQL表「ip_logs」SQL總是檢查第一個結果只

enter image description here

什麼,我試圖做的: 如果成員IP $ _ SERVER [「REMOTE_ADDR」]已經在ip_logs table..this會出現消息「對不起!」

的問題是系統總是檢查第一個IP只能在ip_logs表

我的代碼是:

<? 
    $link=mysql_connect("localhost","DBUSER","DBPASS","DBNAME") ; 
    mysql_select_db("DBNAME",$link) ; 

    $sql=mysql_query("SELECT * FROM ip_logs"); 
    $rexu=mysql_fetch_array($sql); 

if($rexu[routing_ip]=="".$_SERVER['REMOTE_ADDR']."") { 
echo ' Sorry !! '; 
} 
?> 

請幫助我..有什麼不對?!

+0

將IP地址存儲爲實際的數字,而不是以點劃線表示法中的字符串 – 2012-02-25 01:08:52

回答

3

您想要搜索單個IP,而不是批次。

做這樣的事情:

'SELECT routing_ip FROM ip_logs WHERE routing_ip = "'.$_SERVER['REMOTE_ADDR'].'"' 
1
您使用 mysql_fetch_array這FECH正好位於第一行

,你需要使用fetchAll

$sql=mysql_query("SELECT * FROM ip_logs"); 
$stmt = $db->query($sql); 
$results = $stmt->fetchAll(); 

    foreach($results as $result){ 
     if($result[routing_ip]=="".$_SERVER['REMOTE_ADDR']."") { 
       echo ' Sorry !! '; 
     } 

    } 
1

試試這個:

$sql=mysql_query("SELECT * FROM ip_logs"); 

for($x = 1 ; $x <= mysql_num_rows($sql) ; $x++){ 
    $row = mysql_fetch_assoc($sql); 
    if($row[routing_ip]=="".$_SERVER['REMOTE_ADDR']."") { 
     echo ' Sorry !! '; 
    } 
} 
2

你're:

  • 查詢所有記錄
  • 檢索(只)的第一個結果
  • 檢查它針對您的病情

相反,你想:

  • 查詢爲一個符合條件的記錄

SQL已具備條件功能(WHERE),因此請使用它們。

1
$sql= mysql_query("SELECT * FROM ip_logs"); 

if ($sql != NULL && mysql_num_rows($sql)>0) 
{ 

while ($row = mysql_fetch_object($sql)) 
{ 
if ($row->routing_ip == $_SERVER['REMOTE_ADDR']) { echo ' Sorry !! ';} 
} 

}