1

以下のコードに問題があります。

何らかの理由で、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

2 に答える 2

2

month = 1 を使用していると思います。1 で始まる月は 10、11、12 だけなので、10、11、12 しか得られません。

于 2013-02-01T13:51:41.757 に答える
1

@mellamokb のコメントに基づいています。LIKEuseを使用する代わりに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";
于 2013-02-01T13:52:16.870 に答える