<?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。
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]'");第二处地方
@$sip = mysql_fetch_array($result);
$a_ip = "select ip from ip where ip='$ip' limit 1";
print_r($sip); //是什么结果
$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 字段查找记录呢?
我没有ip字段,而是sip
我所想做的是一个判断,如果值为空,则写入这个IP
如果已经有值,则更新这个值
表名叫ip,字段是sip
$a_ip = "select ip from ip where ip=$ip limit 1";
中不是有吗?
REPLACE INTO ip('','') VALUES ('','')
或者
INSERT INTO ip('','',''..)VALUES('','',..) ON DUPLICATE KEY SET sip='123456'