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

Php 检查并检索数据库列日期是否在接下来的X天内,php,mysql,wordpress,Php,Mysql,Wordpress,我有一个会员网站,其中有一个特定的用户到期日期。我想做的是只让他们的会员资格在X天内到期的用户发送电子邮件 数据库中有一个名为“mm_user_data”的表,过期日期存储在名为“expiration_date”的列中 我可以使用此代码检索所有用户的过期日期 $sql = "SELECT expiration_date FROM mm_user_data"; $expire= $wpdb->get_results($sql); echo var_dump($expire); <?p

我有一个会员网站,其中有一个特定的用户到期日期。我想做的是只让他们的会员资格在X天内到期的用户发送电子邮件

数据库中有一个名为“mm_user_data”的表,过期日期存储在名为“expiration_date”的列中

我可以使用此代码检索所有用户的过期日期

$sql = "SELECT expiration_date FROM mm_user_data";
$expire= $wpdb->get_results($sql);
echo var_dump($expire);
<?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>";


?>
输出是这样的

[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
获取用户的电子邮件,然后向他发送一封电子邮件作为续约提醒。因此,我目前的具体问题是让上述代码正常工作,并检索10天内到期的用户ID。

我能够使用此代码获取所有将在未来10天内到期的用户ID

$sql = "SELECT expiration_date FROM mm_user_data";
$expire= $wpdb->get_results($sql);
echo var_dump($expire);
<?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>";


?>

您可以使用mysql查询来检索所有用户,例如,使用
DATE()
CURDATE()
DATEDIFF()
来检索距离订阅结束只有10天的用户


此查询将返回订阅在10天后结束的用户的所有用户ID。不需要使用php进行痛苦的日期计算

嗨。
$sql3
(或
$daysPriorToRebill
)的输出是什么?日期是否正确?第一个是正确的,它输出所有日期,我只想获取未来10天内的日期,SQL3不输出任何内容,这可能是错误的这是$SQL
string(79)“从mm\u user\u数据中选择wp\u user\u id,其中expiration\u date=>'2017-01-04'
=>
?应该是
=
,否?检查一些提示是否有错误,如
($wpdb->last_error)
,请参阅:我测试了这个,但由于某些原因它不起作用,输出为0数组,使用PHP,它会输出数字,如果这个条件适用于数组。这将是可怕的,如果这可以完全从mysql的queryit是为我工作。检查。您可以尝试使用mysql workbench或phpmyadmin之类的sql管理工具吗。如果出现相同错误,请在sqlfiddle中创建一个模式并将链接发送给我