微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-仅在当天和该用户插入一行,如果该行不存在

当某人第一次访问X页面时,我在表中插入了具有当前unix time()标记的新行.

我想每24小时为该用户插入一条新行.例如:

示例A)Bob,转到我的网站,它插入一行.12小时后,Bob返回,由于24小时还没有过去,所以它没有插入新行.

例B)Bob,到我的网站,插入一行.24小时后,Bob回来,它在经过24小时后插入新行.

我正在开玩笑,但是由于我的大脑被炸了,所以无法想到这是否正确.

$time = time();
$difference = 86400;
$timedifference = $time + $difference;

插入行时:

MysqL_query("INSERT INTO `logs` (`time`, `who`, `site`, `type`) 
VALUES('" . $timedifference . "', '" . $ip . "', '" . $rid . "', 'out') ") 
or die(MysqL_error()); 

在检查是否已超过24小时时:

MysqL_query("SELECT * FROM `logs` 
WHERE `time` < '" . time() . "' AND `type` = 'out' 
AND `site` = '" . $rid . "' AND `who` = '" . $ip . "'");

有人可以告诉我是否正确吗?

解决方法:

这是我想出的..似乎有效:

//log check
$ip = ip2long($_SERVER['REMOTE_ADDR']);
$time = time(); //current time
$difference = 86400; //one day in seconds
$timedifference = $time + $difference; //time difference
$logQ = MysqL_query("SELECT * FROM `logs` WHERE `time` > '" . time() . 
        "' AND `type` = 'out' AND `site` = '" . $id . 
        "' AND `who` = '" . $ip . "'");
$logR = MysqL_num_rows($logQ);
if ($logR <= 0){
  MysqL_query("INSERT INTO `logs` (`time`, `who`, `site`, `type`) VALUES('" . 
  $timedifference . "', '" . $ip . "', '" . $id . "', 'out') ") or 
  die(MysqL_error());  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐