Where子句和Order By未在WordPress中按预期返回

时间:2014-10-10 14:16:07

标签: php mysql wordpress

我很肯定我在这里错过了一些东西。

我有一个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时,它按月和日排序,但不是年份。

感谢所有的帮助。

(*此代码仅用于测试目的)

2 个答案:

答案 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