使用PHP/MySQL显示一周内发生的生日
我有一个有生日的用户数据库,是否可以显示今天是谁的生日以及当前日期一周内的任何生日。我有这个,但不起作用使用PHP/MySQL显示一周内发生的生日,php,mysql,sql,Php,Mysql,Sql,我有一个有生日的用户数据库,是否可以显示今天是谁的生日以及当前日期一周内的任何生日。我有这个,但不起作用 <?php $retrieveBirthday = mysql_query( "SELECT * FROM memberData WHERE mBirthday BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK" ); echo $retrieveBirthday; ?> 我哪
<?php
$retrieveBirthday = mysql_query( "SELECT * FROM memberData WHERE mBirthday BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK" );
echo $retrieveBirthday;
?>
我哪里出了问题?我知道应该是mysqli,但安全性在这里不是问题。大概,生日存储为过去某一年的完整日期。由于生日可能会结束一年,因此问题变得更加复杂 因此,一种方法是将生日移到当前年份,然后进行比较。您可以通过替换年份来执行此操作:
SELECT *
FROM memberData md
WHERE date(concat_ws('-', year(now()), month(mBirthday), day(mBirthDay)))
BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK;
这使用查询中的逻辑,即当前日期前一周到后一周。如果您只希望下周有生日,您可以调整逻辑。看起来您只是忘记了将查询包装在
mysql\u result()
或mysql\u fetch\u array()
中:
您可以将查询编写为:
SELECT * FROM memberData WHERE WEEK(mBirthday) = WEEK(NOW())
我没有从中得到任何东西,没有错误either@ili . . . 这就是在没有格式的情况下使用
str\u to\u date()
时发生的情况。哎呀date()
应该能够计算出日期格式。我应该如何回显它?因为它仍然没有显示任何东西生日是否在指定的时间内?@WorkSmarterI有2月25日、3月2日和3月4日,所以它应该可以工作。我可以告诉你正在使用MySQL,但你真的应该明确地标记这个问题。这很有效!但是如何将字段显示到表中,因为目前该成员的所有详细信息都在一行中,很难阅读,或者更好。。我怎么会呼应名字,姓很快就要过生日了!然后是日期。如何将字段显示到表中
-HTML
SELECT * FROM memberData WHERE WEEK(mBirthday) = WEEK(NOW())