php&;mysql-获取用户上一个月的付款,并将其与当前月份进行比较以发送电子邮件
这是一个学校项目,我需要给那些还没有支付当月账单的人发送电子邮件 我的桌子看起来像这样:php&;mysql-获取用户上一个月的付款,并将其与当前月份进行比较以发送电子邮件,php,mysql,email,payment,Php,Mysql,Email,Payment,这是一个学校项目,我需要给那些还没有支付当月账单的人发送电子邮件 我的桌子看起来像这样: id id_profile code month(m-Y) value 1 1 XXXXXXXX 10-2016 50 2 1 XXXXXXXX 09-2016 50 3 1 XXXXXXXX 11-2016 50 4
id id_profile code month(m-Y) value
1 1 XXXXXXXX 10-2016 50
2 1 XXXXXXXX 09-2016 50
3 1 XXXXXXXX 11-2016 50
4 2 XXXXXXXX 09-2016 50
5 2 XXXXXXXX 08-2016 50
6 2 XXXXXXXX 10-2016 50
SELECT date_format(max(str_to_date(t1.month,'%m-%Y')),'%m-%Y') AS debt, t2.email
FROM incomes AS t1 INNER JOIN profiles AS t2 ON t1.id_profile = t2.id
GROUP BY t1.id_profile
while($row = mysqli_fetch_assoc($sql)){ // To excute with every row
foreach ($row as $campo => $valor){
$$campo = $valor;
}
if (date("m-Y", strtotime('01-'.$debt)) < date('m-Y')) {
//DO YOUR STUFF HERE
}
}
我正在使用内部连接来获取用户的电子邮件,这样就可以了。
我需要的是获得最高的支付月,因为用户将能够支付下个月或最旧的付款可能会被拒绝,并不得不再次支付他们
我当前的查询:
SELECT t1.month, t2.email FROM incomes AS t1 INNER JOIN profiles AS t2 ON t1.id_profile = t2.id
因此,获取支付较高的月份,并将其与当前月份进行比较,以查看用户是否有债务,并向用户发送一封电子邮件,提醒他们必须付款
我在想些什么。有人能帮忙吗?好的,我找到了一种方法,可以在不更改月份字段上的日期格式(如@sean所建议的)的情况下完成这项工作 我使用了
MAX
函数以及date\u格式
和str\u to\u date
来获取最高工资月份,还使用groupby
来获得每个用户一行,并使用一些php将月份和年份与当前日期进行比较,以向欠当前月份的用户发送电子邮件
因此,MYSQL查询如下所示:
id id_profile code month(m-Y) value
1 1 XXXXXXXX 10-2016 50
2 1 XXXXXXXX 09-2016 50
3 1 XXXXXXXX 11-2016 50
4 2 XXXXXXXX 09-2016 50
5 2 XXXXXXXX 08-2016 50
6 2 XXXXXXXX 10-2016 50
SELECT date_format(max(str_to_date(t1.month,'%m-%Y')),'%m-%Y') AS debt, t2.email
FROM incomes AS t1 INNER JOIN profiles AS t2 ON t1.id_profile = t2.id
GROUP BY t1.id_profile
while($row = mysqli_fetch_assoc($sql)){ // To excute with every row
foreach ($row as $campo => $valor){
$$campo = $valor;
}
if (date("m-Y", strtotime('01-'.$debt)) < date('m-Y')) {
//DO YOUR STUFF HERE
}
}
php应该是这样的:
id id_profile code month(m-Y) value
1 1 XXXXXXXX 10-2016 50
2 1 XXXXXXXX 09-2016 50
3 1 XXXXXXXX 11-2016 50
4 2 XXXXXXXX 09-2016 50
5 2 XXXXXXXX 08-2016 50
6 2 XXXXXXXX 10-2016 50
SELECT date_format(max(str_to_date(t1.month,'%m-%Y')),'%m-%Y') AS debt, t2.email
FROM incomes AS t1 INNER JOIN profiles AS t2 ON t1.id_profile = t2.id
GROUP BY t1.id_profile
while($row = mysqli_fetch_assoc($sql)){ // To excute with every row
foreach ($row as $campo => $valor){
$$campo = $valor;
}
if (date("m-Y", strtotime('01-'.$debt)) < date('m-Y')) {
//DO YOUR STUFF HERE
}
}
while($row=mysqli\u fetch\u assoc($sql)){//对每一行执行
foreach($campo=>$valor的行){
$$campo=$valor;
}
如果(日期(“m-Y”,标准时间('01-'。$debt))<日期('m-Y')){
//在这里做你的事
}
}
因为月份字段不是标准日期,所以我必须转换字符串
我希望这对某人有帮助 好的,我找到了一种方法,可以在不更改月份字段上的日期格式(如@sean所建议的)的情况下完成此操作 我使用了
MAX
函数以及date\u格式
和str\u to\u date
来获取最高工资月份,还使用groupby
来获得每个用户一行,并使用一些php将月份和年份与当前日期进行比较,以向欠当前月份的用户发送电子邮件
因此,MYSQL查询如下所示:
id id_profile code month(m-Y) value
1 1 XXXXXXXX 10-2016 50
2 1 XXXXXXXX 09-2016 50
3 1 XXXXXXXX 11-2016 50
4 2 XXXXXXXX 09-2016 50
5 2 XXXXXXXX 08-2016 50
6 2 XXXXXXXX 10-2016 50
SELECT date_format(max(str_to_date(t1.month,'%m-%Y')),'%m-%Y') AS debt, t2.email
FROM incomes AS t1 INNER JOIN profiles AS t2 ON t1.id_profile = t2.id
GROUP BY t1.id_profile
while($row = mysqli_fetch_assoc($sql)){ // To excute with every row
foreach ($row as $campo => $valor){
$$campo = $valor;
}
if (date("m-Y", strtotime('01-'.$debt)) < date('m-Y')) {
//DO YOUR STUFF HERE
}
}
php应该是这样的:
id id_profile code month(m-Y) value
1 1 XXXXXXXX 10-2016 50
2 1 XXXXXXXX 09-2016 50
3 1 XXXXXXXX 11-2016 50
4 2 XXXXXXXX 09-2016 50
5 2 XXXXXXXX 08-2016 50
6 2 XXXXXXXX 10-2016 50
SELECT date_format(max(str_to_date(t1.month,'%m-%Y')),'%m-%Y') AS debt, t2.email
FROM incomes AS t1 INNER JOIN profiles AS t2 ON t1.id_profile = t2.id
GROUP BY t1.id_profile
while($row = mysqli_fetch_assoc($sql)){ // To excute with every row
foreach ($row as $campo => $valor){
$$campo = $valor;
}
if (date("m-Y", strtotime('01-'.$debt)) < date('m-Y')) {
//DO YOUR STUFF HERE
}
}
while($row=mysqli\u fetch\u assoc($sql)){//对每一行执行
foreach($campo=>$valor的行){
$$campo=$valor;
}
如果(日期(“m-Y”,标准时间('01-'。$debt))<日期('m-Y')){
//在这里做你的事
}
}
因为月份字段不是标准日期,所以我必须转换字符串
我希望这对某人有帮助 为什么您的
month
列采用这种格式?如果您使用标准的日期格式-YYYY-MM-DD
,即使您不需要日期值,只是在默认情况下将其设置为01
,这也会简单得多。这样,您就可以在查询中执行此操作,而不需要php循环来计算字符串值。那么,假设month字段是您建议的格式,那么查询将是怎样的呢?谢谢你,我还在学习,所以请容忍我。为什么你的month
专栏采用这种格式?如果您使用标准的日期格式-YYYY-MM-DD
,即使您不需要日期值,只是在默认情况下将其设置为01
,这也会简单得多。这样,您就可以在查询中执行此操作,而不需要php循环来计算字符串值。那么,假设month字段是您建议的格式,那么查询将是怎样的呢?谢谢你,我还在学习,所以请容忍我。