joomla mysql日期数学逻辑

Posted

技术标签:

【中文标题】joomla mysql日期数学逻辑【英文标题】:joomla mysql date math logic 【发布时间】:2015-10-08 11:12:50 【问题描述】:

我正在尝试通过 phpmysql 创建一个条件,用户可以在 formid 的 24 小时时间条款中最多提交 5 次提交

// 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->qn('DateSubmitted').'>='.$db->q('DATE_SUB(NOW(), INTERVAL 1 DAY)')) 的计数应该与最后记录一起完成时间应该是计算24小时差距的基础,仍然不确定,无法达到预期

开始赏金 - 有人可以帮忙吗?

【问题讨论】:

这是 Joomla 对吧? 是的,但它对 cms 类型有影响吗? 首先我只想正确标记您的问题 第二,这里有很多 mysql 开发人员可以快速回答您的问题,但如果它必须在 joomla 代码对象中,因为这将成为真正的利基市场 你试过用&lt;=代替&gt;=吗? 【参考方案1】:

您不需要引用该函数。如果这样做,您将获得的最终查询将是:

DateSubmitted >= 'DATE_SUB(NOW(), INTERVAL 1 DAY)'

这不是你想要的。 由于该部分的内容是您知道的(而不是您从用户那里获得的字符串),因此您不需要引用它。您应该按原样使用它:

 ->where($db->qn('DateSubmitted'). ' >= DATE_SUB(NOW(), INTERVAL 1 DAY)')

【讨论】:

是的,它就像一个魅力,我错误地使用了相同的 - 谢谢【参考方案2】:

现在用 CURDATE 代替

->where($db->qn('DateSubmitted').'>='.$db->q('CURDATE() - INTERVAL 1 DAY')

【讨论】:

对上述规则没有任何影响 ->where($db->qn('DateSubmitted').'>='.$db->q('CURDATE() - INTERVAL 1天)'))

以上是关于joomla mysql日期数学逻辑的主要内容,如果未能解决你的问题,请参考以下文章

Joomla 1.5日期戳

无法删除Joomla模板中的创建日期

Joomla 组件 MySQL 卸载未运行

需要一个 Joomla!组件“邮件提醒”

逻辑上选择类别和子类别(php,joomla,javascript,ajax)

CVE-2018-8045 Joomla内核SQL注入漏洞