php - 检查并检索数据库列日期是否在接下来的 X 天内

标签 php mysql wordpress

我有一个成员(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/

相关文章:

php - 将 Sakila 数据库导入 PhpMyAdmin

php - WordPress AJAX 文件上传

php - 多个 WordPress 循环

php - XAMPP 7.0.6 中的 api-ms-win-crt-runtime-l1-1-0.dll 丢失错误

无论缓冲区设置如何,PHP 命令行输出缓冲区输出

php - 使用哈希减少 PHP 中的时间戳长度

java - 如何使用jsp浏览mysql数据库表中的文件存储excel的数据

php - 如何在php中从数据库中的文本框中写入文本

mysql - 从子查询中选择具有最大值的行,而不使用 LIMIT

javascript - WordPress:在 function.php 中排队后,javascript 未加载