rag*_*nny 1 php mysql sql database scripting
我正在编写一个系统,显示选定月份的数据.用户可以选择他们想要查看的月份,然后创建一个类似于.com/page.php?month = 03的页面,您可以猜到该页面将采用该想法,然后使用它从数据库中获取数据从那个月开始.
现在根据我对vars的URL中的月份,基于此示例的$ startdate $ enddate开始日期是2011-03-01,然后我将日期部分添加29或30,具体取决于月份是否有月份31或30天.好的,所以我这样做的日期:
$startdate = mktime(0,0,0,date("$month"),date("01"),date("2011"));
if( $month==04 || $month==06 || $month==9 || $month==11)
{
$enddate = mktime(0,0,0,date("$month"),date("01")+29,date("2011"));
}
else
{
$enddate = mktime(0,0,0,date("$month"),date("01")+30,date("2011"));
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用这些变量从数据库中获取数据时,它似乎不起作用,这是查询:
$getresults = mysql_query("SELECT * FROM table1 WHERE date BETWEEN $startdate AND $enddate ORDER BY date ASC");
Run Code Online (Sandbox Code Playgroud)
问题是,如果我将变量更改为硬编码日期,它的作品是一种享受...任何人都有任何想法?我认为它与日式格式有关?在我的数据库中它的"Ymd"并且在php中也是一样的.
感谢任何帮助我真正坚持这一点的人.
mktime
将日期生成为Unix时间戳(例如'1317046059'),但您的表以不同的格式存储日期(例如'2011-09-26').要使查询起作用,您需要将时间戳转换为适当的格式:
$enddate = date( 'Y-m-d', mktime(0,0,0,date("$month"),date("01")+29,date("2011")) );
Run Code Online (Sandbox Code Playgroud)
更新:
根据您的新评论,您的日期将作为时间戳存储在数据库中,您需要以这种方式格式化日期:
$enddate = date( 'Y-m-d h:i:s', mktime(0,0,0,date("$month"),date("01")+29,date("2011")) );
Run Code Online (Sandbox Code Playgroud)