使用UNIX_TIMESTAMP的MySQL查询不起作用

时间:2015-06-04 18:31:45

标签: php mysql

我试图查看MySQL数据库中 2015-6-11 21:28:02 形式的字段(end_date)是否大于当前时间。从本质上讲,是未来的领域。

这是我的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'];
}

我一直收到错误:

  

警告:mysql_fetch_assoc():提供的参数不是第373行/path/to/script.php中的有效MySQL结果资源。

第373行是while ($row = mysql_fetch_assoc($result)) {部分。

有关如何解决此问题的任何想法?

3 个答案:

答案 0 :(得分:3)

为什么不跳过所有这些,只是这样做:

WHERE end_date < NOW()

使用UNIXTIME进行转换对您的数据库非常侮辱,它需要对表中的每一行进行评估,并且不能使用索引。如果已建立索引,日期字段本身将非常快速地进行评估。

答案 1 :(得分: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";

答案 2 :(得分:0)

发现它!!!

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

愚蠢的语法.... :)