我在php中构建一个应用程序,在会员资格到期前一周向客户发送一封自动电子邮件(使用cron作业)。有没有办法在到期前至少一周从我的数据库中检索记录?
我做到了:
$today = strtotime(date("Y-m-d"));
$query = "SELECT first_name, last_name, email, renewal_date, membership_id FROM v_clients_members WHERE renewal_date < '$today'";
然后尝试用
来改进它$today = strtotime(date("Y-m-d")+"1 week");
$query = "SELECT first_name, last_name, email, renewal_date, membership_id FROM v_clients_members WHERE renewal_date < '$today'";
我知道我的问题是今日$的声明,但我不知道如何获得今天的日期+一周。
PS 我知道我应该使用准备好的语句,但客户希望我使用它的遗留代码,尽管我有异议。还使用cron作业,因为我可能会设置它,以便每天早上(凌晨2点到3点)进行数据库检查并发送电子邮件。
答案 0 :(得分:1)
我假设您知道date("Y-m-d")+"1 week"
没有多大意义,并且您用它来向我们展示您的意思,所以我不会在那里详细介绍。
无论如何,strtotime()
期望第一个参数(根据他的PHP手册)是:
根据GNU日期输入格式语法解析的字符串
如果您查看this document about relative date formats,则可以看到:
号码空间? - 处理值为数字的相对时间项。
这意味着您可以使用1 week
来定义从现在开始一周的日期。
$expire = strtotime(date("Y-m-d", strtotime("1 week"));
$query = "SELECT first_name, last_name, email, renewal_date, membership_id FROM v_clients_members WHERE renewal_date < '$expire'";