2012-02-25 40 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 !! ';} 
} 

}