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

我有一个MySQL数据库表设置:
kdate,kday,kmonth和kontent

kdate设置了过期日期(管理员输入),格式为01-01-2014 date(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时,按月和日排序,但不按年份排序。

感谢您的协助。

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

最佳答案

请尝试:

"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语句都不起作用。您需要将其转换为日期格式才能使用>=

关于php - Where子句和Order通过未按预期在WordPress中返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26301528/

10-11 05:10