我正在尝试通过php&创建一个条件用户可以在一个格式的24小时time子句中提交最多5次提交的mysql
// Define the maximum number of submissions for 24 hours
$max = 5;
$user = JFactory::getUser();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Setup the query.
$query->select('COUNT('.$db->qn('Username').')')
->from($db->qn('#__rs_submissions'))
->where($db->qn('FormId').'='.$db->q($formId))
->where($db->qn('Username').'='.$db->q($user->get('username')));
->where($db->qn('DateSubmitted').'>='.$db->q('DATE_SUB(NOW(), INTERVAL 1 DAY)'))
$db->setQuery($query);
$counter = $db->loadResult();
if ($counter >= $max){
$formLayout = '<p style="color:blue;">Oops !! Your Limits are Exhausted for 24 hours </p>';
}
}
这是数据库表值
查询不符合24小时期限的日期时间条件
->where($db->qn('DateSubmitted').'>='.$db->q('DATE_SUB(NOW(), INTERVAL 1 DAY)'))
有人可以提供帮助和建议 - 我做错了什么,并且解决了24小时的限制
修改 我猜 - 计数($ db-&gt; qn('DateSubmitted')。'&gt; ='。$ db-&gt; q('DATE_SUB(NOW(),INTERVAL 1 DAY)'))应该完成 - 沿最后记录的时间应该是计算24小时差距的基础,仍然不确定无法达到预期的
开始赏金 - 有人可以提供帮助吗。
答案 0 :(得分:3)
您无需引用该功能。如果您这样做,您将得到的最终查询将是:
DateSubmitted >= 'DATE_SUB(NOW(), INTERVAL 1 DAY)'
这不是你想要的。 由于该部分的内容是您所知道的(而不是您从用户那里获得的字符串),因此您不需要引用它。你应该按原样使用它:
->where($db->qn('DateSubmitted'). ' >= DATE_SUB(NOW(), INTERVAL 1 DAY)')
答案 1 :(得分:0)
而不是现在使用CURDATE
- &gt; where($ db-&gt; qn('DateSubmitted')。'&gt; ='。$ db-&gt; q('CURDATE() - INTERVAL 1 DAY')