我怎样才能搜索一个月中的任何一天?

I'm doing a search through a database to find articles written within a certain month:

between '1 '.$month.' '.$year and '31 '.$month.' '.$year

Is this method ok even if some months (like February) only have 28 days? In other words, do I have to dynamically find the number of days in the month, or not?

No, you don't need to know the lengths of the months. Just do this:

WHERE MONTH(yourcolumnname) = $month AND YEAR(yourcolumnname) = $year

Can you search between

between '1 '.$month.' '.$year and '1 '.$month_plus1.' '.$year

?

Have you tried running your sql statement against the data you are trying to match, that might be a good approach to begin with.

Your code looks o.k. in the sense that it will work, but a more elegant approach would be

SELECT * FROM tablename WHERE MONTH(columname) = '1'
                              AND YEAR(columnname) = '2009'

If it's a DATETIME or DATE field, you could also do SELECT * FROM table WHERE date_column LIKE '2010-02-%'; With indexing, this may be faster than the MONTH() and YEAR() technique, which'll have to run a calculation on each row.