php - joomla mysql 日期数学逻辑

标签 php mysql joomla logic

我正在尝试通过 php 和 mysql 创建一个条件,用户可以在 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>';
}
}

这是数据库表值 enter image description here

查询不符合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小时差距的基础,仍然不确定,因为无法达到预期

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

最佳答案

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

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

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

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

关于php - joomla mysql 日期数学逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31497718/

相关文章:

php - 如何在mysql和php中使用非utf字符进行搜索

php - Yii 固定装置问题?

javascript - 带有 Firebase 的通知系统在每次重新加载时触发回调

mysql - 如何在数据库更新查询中使用FOR或WHILE?

php - 自动刷新 div 内容并立即向下滚动?

MySQL 查询不起作用

mysql - 如何检查 ruby​​ on rails 中的 mysql 连接

Mysql DISTINCT 和 COUNT 查询

php - 错误 1146 : table '#__content' doesn't exist' in mysql Phpmyadmin

joomla - 文章作为主页,没有连接菜单