Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP/MySQL显示一周内发生的生日_Php_Mysql_Sql - Fatal编程技术网

使用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())