2013-02-01 143 views
1

我对下面的代码有问题。PHP SQL查询日期结果问题

出于某种原因,它仅显示10月,11月和12月的日期。

的日期具有相同的格式...见下文:

DATE   RESULT 

2013-02-01  Does Not Display 
2013-03-01  Does Not Display 
2013-04-01  Does Not Display 
2013-05-01  Does Not Display 
2013-06-01  Does Not Display 
2013-07-01  Does Not Display 
2013-08-01  Does Not Display 
2013-09-01  Does Not Display 
2013-10-01  Displays OK 
2013-11-01  Displays OK 
2013-12-01  Displays OK 

下面是查询代码:

$events = array(); 
$query = "SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date FROM mytable WHERE user_id = '$session_user_id' AND date LIKE '$year-$month%' AND active = 1"; 
$result = mysql_query($query,$db_link) or die('cannot get results!'); 
while($row = mysql_fetch_assoc($result)) { 

$events[$row['date']][] = $row; 

} 

任何人都有的,为什么这可能是发生什么想法?

+4

让我猜...'$ year = 2013'和'$ month = 1'?考虑将呈现的查询是什么:'date LIKE'2013-1%''。 – mellamokb

+0

PHP代码在这里完全不相关。生成的SQL代码是什么样的? –

+0

检查您的$ month变量值。 –

回答

1

基于@ mellamokb的评论开始只有几个月。而不是使用LIKE使用BETWEEN。这也使查询更快。

$query = "SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date FROM mytable WHERE user_id = '$session_user_id' AND date BETWEEN '$year-$month-1' AND '" . date("Y-m-t", strtotime("$year-$month-1")) . "' AND active = 1"; 
2

我猜你正在使用一个月= 1,你得到10,11和12只,因为它们是用1