使用PHP / MySQL显示一周内发生的生日

时间:2015-02-28 21:53:14

标签: php mysql sql

我有一个生日用户数据库,是否可以显示今天的生日和当前日期一周内的任何生日。我有这个,但它没有用。

<?php
  $retrieveBirthday = mysql_query( "SELECT * FROM memberData WHERE mBirthday BETWEEN CURDATE() - INTERVAL 1 WEEK AND CURDATE() + INTERVAL 1 WEEK" );
    echo $retrieveBirthday;
?>

我在哪里错了?我知道它应该是mysqli,但安全性不是问题。

3 个答案:

答案 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())