这就是我想要做的。
id ip timestamp userid
9 127.0.0.1 2013-06-27 16:52:49 35
我想首先查询表,看看用户的ip是否持久化。如果是这样,他/她投票2)检查当前时间戳的投票时间戳,如果他的投票时间是24小时之后,则允许他再次投票。确保他只能在24小时内投票一次。
这是我当前的zend_db_select语句。逻辑
出现了一些问题function checkIfCanLikeH($hlid,$ip){
$canlike = false;
$currenttime = time();
$checkquery = $this->dbo->select()
->from("hl", array("num"=>"COUNT(*)"))
->where("hlid = ?", $hlid)
->where("ip = ?", $ip)
->where("timestamp < ".new Zend_Db_Expr('NOW()'));
$this->dbo->setFetchMode(Zend_Db::FETCH_ASSOC);
$checkrequest = $this->dbo->fetchRow($checkquery);
if($checkrequest['num']!=0){
$ip = true;
}
return $ip;
}
我被困在如何比较时间戳。我需要从表中检索时间戳并检查当前时间是否小于表中的值(24小时后添加)。
建议表示赞赏。
答案 0 :(得分:1)
->where("timestamp < DATE_SUB(NOW(), INTERVAL 1 DAY)");
这是使用MySQL的timestamp / datetime / date列类型的优势 - 您可以使用其内置的日期和时间函数。而且我很确定你在这里不需要Zend_Db_Expr
。
编辑:我不完全清楚你在问什么,但我认为上面的WHERE子句可以做你想要的,反之亦然。你可以这样做:
->where("DATE_ADD(timestamp, INTERVAL 1 DAY) < NOW()");
这是同样的事情,但写的方式不同。这意味着“时间戳+ 1天小于当前时间”。
如果有帮助,请尝试在您的数据库上运行此查询:
SELECT DATE_ADD(timestamp, INTERVAL 1 DAY), NOW() FROM hl
所以你可以看到MySQL中的DATE_ADD()
函数是如何工作的。