Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql查询选择最近15条记录加上下一年添加的所有新记录_Php_Mysql - Fatal编程技术网

Php mysql查询选择最近15条记录加上下一年添加的所有新记录

Php mysql查询选择最近15条记录加上下一年添加的所有新记录,php,mysql,Php,Mysql,我有一个以id为主键的mysql表 每天,我会为会员添加一条记录 我想显示从用户注册日期算起的最后15条记录+一年内新增的所有记录。用户会员资格自注册之日起一年 e、 g.如果用户1在2021年4月1日注册,他应该在4月1日之前访问15条以前的记录+下一年新添加的所有记录 及 如果user2在2021年4月20日注册,他应该可以访问从4月20日开始的最后15条以及下一年添加的记录 mysql表中将没有upload_date列 这将返回最后15条记录,但在第二天,第一条记录将不可见,第16条记录将

我有一个以id为主键的mysql表

每天,我会为会员添加一条记录

我想显示从用户注册日期算起的最后15条记录+一年内新增的所有记录。用户会员资格自注册之日起一年

e、 g.如果用户1在2021年4月1日注册,他应该在4月1日之前访问15条以前的记录+下一年新添加的所有记录

如果user2在2021年4月20日注册,他应该可以访问从4月20日开始的最后15条以及下一年添加的记录

mysql表中将没有upload_date列

这将返回最后15条记录,但在第二天,第一条记录将不可见,第16条记录将显示


但我想向用户展示他区域的最后15个。日期+下一年添加的所有记录…

我不知道是否完全理解您的要求…但我来了

您应该有一个列,其中包含注册日期的注册表

假设我们有

您可以尝试以下语句:

SELECT *
FROM table
WHERE register_date BETWEEN 
                        (DATE_SUB((SELECT register_date FROM table WHERE id = ?) INTERVAL 15 DAY))
                        AND 
                        (DATE_ADD((SELECT register_date FROM table WHERE id = ?) INTERVAL 1 YEAR))
ORDER BY register_date DESC
基本上,我们从我们选择的用户那里选择注册日期,即?。
然后我们选择15天前到1年后注册的所有记录。

这听起来好像数据库设计有点欠缺。然而,这并不意味着它不能做到

短期解决方案 根据你的描述,我将做出一些假设:

你有两张桌子,就像这样

user                  dailycontent
    id                    id
    name                  content
    registration
第一条记录的开始日期是固定的

你每天写一篇文章:没有空白或倍数等

代码:

注意:上传将是一个日期时间字段


这毫无意义。。。桌子是什么?可能不是用户表?如果没有日期字段或某种转换/索引方法,显然不能用日期进行偏移。如果您可以提供数据库结构,这可能会更清楚……是否至少有用户的创建日期值,以及记录??这个问题不清楚。回答不清楚的问题无助于堆栈溢出,因为堆栈溢出会保留不清楚的页面,而不清楚的页面对研究人员没有帮助。请把未来的研究者放在第一位。在回答之前,与OP一起改进问题。我得到的印象是,实际上是两张表,第二张表包含某种内容?这只会选择一大堆用户?在这种情况下,他/她只需要编辑查询的前3行;在这个问题中,它说在我假设的内容表中没有上载日期,所以您不能在date1和date2之间使用,因为date字段不存在?
user                  dailycontent
    id                    id
    name                  content
    registration
$startDate = "2021-01-01";
$userID    = 1;

$sql = "
    SELECT dailycontent.id, dailycontent.content
    FROM dailycontent
    JOIN user ON user.id = ?
    WHERE dailycontent.id > DATEDIFF(user.registration, ?) - 15
        AND dailycontent.id <= DATEDIFF(DATE_ADD(user.registration, INTERVAL 1 YEAR), user.registration) + DATEDIFF(user.registration, ?)
    ORDER BY dailycontent.id ASC
";

$query = $pdo->prepare($sql);
$query->execute([$userID, $startDate, $startDate]);
   user                  dailycontent
       id                    id
       name                  content
       registration          upload
$userID = 1;

$sql = "
    SELECT dailycontent.id, dailycontent.content
    FROM dailycontent
    JOIN user ON user.id = 2
    WHERE dailycontent.upload > DATE_SUB(user.registration, INTERVAL 15 DAY)
        AND dailycontent.upload <= DATE_ADD(user.registration, INTERVAL 1 YEAR)
    ORDER BY dailycontent.upload ASC
";

$query = $pdo->prepare($sql);
$query->execute([$userID]);