SQL始终只检查第一个结果

时间:2012-02-25 00:58:17

标签: php sql

我有SQL表“ip_logs”

enter image description here

我想做什么: 如果成员Ip $ _SERVER ['REMOTE_ADDR']已经在ip_logs表中..这条消息将显示“抱歉!!”

问题是系统总是只检查ip_logs表中的第一个IP

我的代码是:

<?
  $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 !! ';
}
?>

请帮帮我......有什么不对?!

5 个答案:

答案 0 :(得分:3)

您想要搜索单个IP,而不是批次。

做类似的事情:

'SELECT routing_ip FROM ip_logs WHERE routing_ip = "'.$_SERVER['REMOTE_ADDR'].'"'

答案 1 :(得分:2)

您是:

  • 查询所有记录
  • 检索(仅)第一个结果
  • 根据您的情况检查

相反,您想要:

  • 查询符合条件的一条记录

SQL已具备条件功能(WHERE),因此请使用它们。

答案 2 :(得分:1)

您使用的是mysql_fetch_array,只需要第一行,您需要使用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 !! ';
        }

    }

答案 3 :(得分: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 !! ';
    }
}

答案 4 :(得分: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 !! ';}
}

}