我有一个生日用户数据库,是否可以显示今天的生日和当前日期一周内的任何生日。我有这个,但它没有用。
<?php
$retrieveBirthday = mysql_query( "SELECT * FROM memberData WHERE mBirthday BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK" );
echo $retrieveBirthday;
?>
我在哪里错了?我知道它应该是mysqli,但安全性不是问题。
答案 0 :(得分:2)
看起来您忘记将查询包装在mysql_result()
或mysql_fetch_array()
中:
<?php
$query = mysql_query( "SELECT * FROM memberData WHERE mBirthday BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK" );
while ($rows = mysql_fetch_array($query, MYSQL_NUM)) {
$retrieveBirthdays = $rows;
}
foreach ($retrieveBirthdays as $retrieveBirthday) {
echo $retrieveBirthday;
}
?>
答案 1 :(得分:0)
据推测,生日存储为过去一年的完整日期。然后问题变得更加复杂,因为生日可能会包装年份。
因此,一种方法是将生日移动到当前年份,然后进行比较。您可以通过替换年份来完成此操作:
SELECT *
FROM memberData md
WHERE date(concat_ws('-', year(now()), month(mBirthday), day(mBirthDay)))
BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK;
这使用您查询中的逻辑,该逻辑在当前日期之前一周到一周之后。如果你只想在下周出现生日,你会调整逻辑。
答案 2 :(得分:0)
您可以将查询编写为:
SELECT * FROM memberData WHERE WEEK(mBirthday) = WEEK(NOW())