我很肯定我在这里错过了一些东西。
我有一个MySQL数据库表设置: kdate,kday,kmonth和kontent
kdate设置为过期日期(管理员输入),格式为01-01-2014日期(m-d-Y)
我正在尝试使用比今天更早的日期,以便在执行脚本时不显示。
global $wpdb;
$today = date('m-d-y');
$result = $wpdb->get_results( "SELECT * FROM wp_kaltable WHERE kdate >= $today ORDER BY kdate ASC LIMIT 6 ");
//echo "<pre>"; print_r($result); echo "</pre>";
foreach($result as $row)
{
echo "<div class='kalcontain'><div class='kal'><div class='kdate'><p class='kmonth'>".$row->kmonth."</p><p class='kday'>" .$row->kday."</div><div class='kontent'><p class='ktext'>".$row->kontent. "</p></div><div class'clear'></div></div></div>";
}
当我执行此脚本时,我会获得所有数据,甚至包含日期少于今天日期的数据。 此外,使用ORDER BY时,它按月和日排序,但不是年份。
感谢所有的帮助。
(*此代码仅用于测试目的)
答案 0 :(得分:0)
尝试改为:
"SELECT * FROM wp_kaltable WHERE kdate >= '$today' ORDER BY kdate ASC LIMIT 6 "
今天美元周围的单引号非常重要。
如果kdate
是日期格式,那么你可以使用mysql中的CURDATE(),这样你就不必在php中捣乱:
"SELECT * FROM wp_kaltable WHERE kdate >= CURDATE() ORDER BY kdate ASC LIMIT 6 "
如果kdate不是日期格式,由于ORDER BY无法正常工作,它可能不是,因此这些SQL语句都不起作用。您需要转换为日期格式才能>=
答案 1 :(得分:0)
您从今天开始查询日期>
,而不是从今天开始查询<
:
SELECT *
FROM wp_kaltable
WHERE kdate <= $today -- Note the <= operator
ORDER BY kdate ASC
LIMIT 6