我有一个成员(member)网站,其中对用户有特定的到期日期。我想要做的是只获取其成员(member)资格将在 X 天内到期的用户并向他们发送电子邮件。
数据库中有一个名为“mm_user_data”的表,过期日期存储在名为“expiration_date”的列中
我可以使用此代码检索所有用户的到期日期
$sql = "SELECT expiration_date FROM mm_user_data";
$expire= $wpdb->get_results($sql);
echo var_dump($expire);
输出是这样的
[0]=> object(stdClass)#2455 (1) { ["expiration_date"]=> string(19) "2017-06-30 16:00:00" }
我需要做的是仅在“2017-06-30 16:00:00”在接下来的 10 天内检查和检索列 wp_user_id
我尝试了这个,但似乎不起作用
$daysPriorToRebill = 10;
$priorToRebillDate = date('Y-m-d', strtotime("-{$daysPriorToRebill} days"));
$sql3 = "SELECT wp_user_id
FROM mm_user_data
WHERE expiration_date = '".$daysPriorToRebill."'";
$userid = $wpdb->get_results($sql3);
echo var_dump($userid);
输出数组(0) { }
。
由此,我希望能够使用 $userid
获取 user_email,然后向他发送一封电子邮件作为续订提醒。因此,我目前的具体问题是让上面的代码正常工作并检索 10 天后过期的用户的用户 ID。
最佳答案
我能够使用此代码获取将在未来 10 天内过期的所有用户的 ID
<?php
global $wpdb;
// This SQL retrieves all subscriptions That wil expire in 10 days
$daysPriorToRebill = 10;
$priorToRebillDate = date('Y-m-d', strtotime("+{$daysPriorToRebill} days"));
$todaydate = date('Y-m-d');
$sql3 = "SELECT wp_user_id
FROM mm_user_data
WHERE expiration_date < '".$priorToRebillDate."' AND expiration_date > '".$todaydate."'";
$userid = $wpdb->get_results($sql3);
echo "<p>User ids are {var_dump($userid)}</p>";
?>
您会注意到我添加了 ANDexpiration_date > '".$todaydate."'"
,这是因为它正在检索到期日期低于 $priorToRebillDate 的所有成员(member)资格
code> 比 current_day 提前 10 天,所以我需要阻止它带来任何已经过期的内容。
关于php - 检查并检索数据库列日期是否在接下来的 X 天内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41321459/