2014-10-10 141 views
1

我很積極,我在這裏錯過了一些東西。Where子句和Order By未按預期返回WordPress

我有一個MySQL數據庫表設置: kdate,kday,kmonth和kontent

kdate設置有到期日期(管理員輸入)格式化爲2014年1月1日的日期(MDY)

我正在嘗試獲取比今天更早的日期,以便在執行腳本時不顯示日期。

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

嘗試,而不是:今天

"SELECT * FROM wp_kaltable WHERE kdate >= '$today' ORDER BY kdate ASC LIMIT 6 " 

圍繞$單引號內是很重要的。

如果kdate是日期格式,那麼你可以只使用CURDATE()從MySQL,這樣你就不必在PHP渣土周圍:

"SELECT * FROM wp_kaltable WHERE kdate >= CURDATE() ORDER BY kdate ASC LIMIT 6 " 

如果kdate不是日期格式,它可能不由於你的ORDER BY不能正常工作,那麼這些SQL語句都不會起作用。您將需要轉換爲日期格式,以便於>=

+0

謝謝@JNevil,排序按現在是正確的,和日期今天之前沒有顯示。優秀! (我沒有足夠的積分給你+1,所以這裏是... +1!) – 2014-10-10 14:33:27

0

你從今天起,而不是<從今天日期查詢>

SELECT * 
FROM  wp_kaltable 
WHERE kdate <= $today -- Note the <= operator 
ORDER BY kdate ASC 
LIMIT 6