2015-06-04 70 views
0

我想看看是否一個字段(end_date)在MySQL數據庫中的形式是2015-6-11 21:28:02是否大於當前時間。從本質上來說,這個領域是否在未來呢?MySQL查詢與UNIX_TIMESTAMP不工作

這是我的PHP代碼:

$current_time = time(); 
$sql = "SELECT member_id, course_id, FROM ".TABLE_PREFIX."vbc_status WHERE end_date < NOW()"; 
$result = mysql_query($sql, $db); 
while ($row = mysql_fetch_assoc($result)) { 
    $echo $row['member_id']; 
} 

我不斷收到一個錯誤:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /path/to/script.php on line 373.

線373是while ($row = mysql_fetch_assoc($result)) {一部分。

任何想法應該如何解決這個問題?

+2

什麼是您得到的錯誤消息? – Timo

+0

警告:mysql_fetch_assoc():提供的參數不是在373行的/path/to/my/script.php中有效的MySQL結果資源 – gtilflm

+1

Ugh。你正在使用'mysql_query',不是嗎?您錯誤地調用了該函數,錯誤的參數,查詢字符串本身可能沒問題。請記住一個現代的數據庫驅動程序,如[PDO並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access /)。像[PHP The Right Way](http://www.phptherightway.com/)這樣的指南可以幫助解釋最佳實踐。 – tadman

回答

3

爲什麼不能跳過這一切,只是這樣做:

WHERE end_date < NOW() 

UNIXTIME轉換爲您的數據庫非常辱罵,它需要評估,對於表中的每一行,不能使用索引。如果索引,日期字段本身將評估得非常快。

+0

已將其更改爲'$ sql =「SELECT member_id,course_id,FROM」.TABLE_PREFIX。「vbc_status WHERE end_date gtilflm

+1

是的,因爲你沒有正確地調用查詢功能。閱讀['mysql_query'](http://php.net/manual/en/function.mysql-query.php)文檔,看看你應該如何調用它,因爲它需要一個有效的連接句柄,除非有一個先前已經建立,並注意**大紅色框**。 – tadman

+0

看起來像你有一個問題,你如何執行你的查詢..也創建它後echo $ sql –

0

您也可以將您的變量格式設置爲數據庫中使用的相同格式。

define('DATETIME_SQL', 'Y-m-d H:i:s'); 
$current_time = date(DATETIME_SQL); 
$sql = "SELECT member_id, course_id, FROM ".TABLE_PREFIX."vbc_status WHERE end_date < $current_time"; 
0

發現它!

$sql = "SELECT member_id, course_id, FROM ".TABLE_PREFIX."vbc_status WHERE end_date < NOW()";course_id之後有一個不必要的,

愚蠢的語法.... :)