2013-02-01 141 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