<?php
$sql = mysql_connect("127.0.0.1","root","kingmoyiyang");
mysql_query('$sql');
if (!$sql){
die('数据连接失败,原因:'.mysql_error());
}

mysql_select_db("moyiyang",$sql);

$ip = $_SERVER["REMOTE_ADDR"];

mysql_query('set names utf8');

$a_ip = "select ip from ip where ip=$ip limit 1";

mysql_query($a_ip,$sql);

@$sip = mysql_fetch_array($a_ip);
if(!empty($sip['ip'])){

mysql_query("update ip set sip='".ip2long($ip)."' where ip='$ip'");

}else{

$xr = "INSERT INTO ip (`sip`) VALUES ('$ip')";
if (!mysql_query($xr,$sql)){
die ('发生错误了囧,代码:'.mysql_error());

} }
mysql_close($sql);
?>这是PHP的代码目的就是判断数据库SIP是否为空,为空则写入,不为空则更新值。
其实就是写上一次登录IP。
现在的情况是,写进去了但是不更新而且追加了表名叫:ip,字段叫sip。

解决方案 »

  1.   

    更新的这条代码错了.
    mysql_query("update ip set sip='".ip2long($ip)."' where ip='$ip'");后面的where 应该要相应的ip所对应的id,所以取值的时候,必须取id,然后改为:
    需要改2处地方:
    $a_ip = "select id,ip from ip where ip=$ip limit 1";  第一处地方mysql_query("update ip set sip='".ip2long($ip)."' where id='$sip[id]'");第二处地方
      

  2.   

      $result=mysql_query($a_ip,$sql);
        
        @$sip =    mysql_fetch_array($result);
      

  3.   

    你的ip是字符类型吧
     $a_ip = "select ip from ip where ip='$ip' limit 1";
    print_r($sip);  //是什么结果
      

  4.   

    $ip = $_SERVER["REMOTE_ADDR"]; //$ip 形如 xxx.xxx.xxx.xxx$a_ip = "select ip from ip where ip='$ip' limit 1"; //所以$ip要用单引号括起
        
    $r = mysql_query($a_ip,$sql); //查询结果集资源要有一个变量承接
        
    @$sip = mysql_fetch_array($rs); //要从结果集资源中读取if(!empty($sip['ip'])){
      mysql_query("update ip set sip='".ip2long($ip)."' where ip='$ip'"); //既然 sip 是数值类型
    }else{
      $xr = "INSERT INTO ip (`sip`) VALUES ('$ip')"; //那为什么要想其中cherub字符串
      if (!mysql_query($xr,$sql)){
        die ('发生错误了囧,代码:'.mysql_error());
      }
    }
    mysql_close($sql);另外你并没有向 ip 字段插入数据,那么如何能按 ip 字段查找记录呢?
        
      

  5.   

    抱歉点错按钮扔板砖了- -
    我没有ip字段,而是sip
    我所想做的是一个判断,如果值为空,则写入这个IP
    如果已经有值,则更新这个值
    表名叫ip,字段是sip
      

  6.   

    怎么没有?
    $a_ip = "select ip from ip where ip=$ip limit 1";
    中不是有吗?
      

  7.   

    很简单啊。一句SQL搞定:
    REPLACE INTO ip('','') VALUES ('','')  
    或者
    INSERT INTO ip('','',''..)VALUES('','',..) ON DUPLICATE KEY SET sip='123456'