返回查询的最旧时间戳

时间:2011-09-01 00:48:27

标签: php mysql

我正在尝试获取MySQL表“comment”中最老的时间戳的时间,其中满足以下条件:

  1. Loginid时间戳等于$uid
  2. 时间戳是在最后一小时内完成的。
  3. 我已经尝试了下面的代码,它没有为$minutes回应任何内容。

    如何让$minutes回显符合上述两个条件的最旧时间戳?

    编辑: datecommented是一个时间戳。

    编辑2: $minutes回显为空白区域。这可能是PHP格式化问题吗?

    $result = mysql_query('SELECT * FROM comment WHERE datecommented >= NOW() - INTERVAL 1 HOUR AND loginid = "$uid" ORDER BY datecommented ASC LIMIT 1');
    
    $row = mysql_fetch_array($result);
    
    $minutes = $row['datecommented'];
    
    
    echo '<div>Test '.$uid.' test '.$minutes.' test.</div>';
    

3 个答案:

答案 0 :(得分:2)

请在您的sql查询中添加错误检查,我怀疑您的sql失败

 or die(mysql_error());
像这样

$result = mysql_query('SELECT * FROM comment WHERE datecommented >= NOW() - INTERVAL 1 HOUR AND loginid = "$uid" ORDER BY datecommented ASC LIMIT 1') or die(mysql_error());

猜测我会期望“$ uid”周围的“双引号”应为单引号, 这意味着您需要将整个语句的单引号更改为双引号

像这样

$result = mysql_query("SELECT * FROM comment WHERE datecommented >= NOW() - INTERVAL 1 HOUR AND loginid = '$uid' ORDER BY datecommented ASC LIMIT 1") or die(mysql_error());

答案 1 :(得分:1)

您应首先在MySQL的命令行或PHPMyAdmin等工具上尝试查询,然后您将知道返回的数据是否符合预期。

如果列没有存储或返回时间戳作为数字,我还建议使用SELECT ... UNIX_TIMESTAMP(thefieldyouwantatimestampfrom) ... WHERE ...

答案 2 :(得分:0)

好吧,如果“datecommented”在unixtimestamp中,那么它当然不会返回分钟,而是返回秒。因为unixtimestamp是几秒钟。

你的mysql查询甚至可以这样工作吗?或者实际查询是否有问题?

你的$row输出了什么吗?试试print_r($row);

但是简单地说,我的回答是,你没有将你的原始unxitimestamp转换成几分钟。

你可以像这样得到几分钟:echo ($row['datecommented'] * 60);

你可以得到你的unixtimestamp的分钟值:echo date("i", $row['datecommented']);