2014-01-15 23 views
0

在我的帐户的用户,我有一个显示以下内容的“上次登录”部分:通过LIMIT 1获得最后的登录 - PHP和MYSQL

<?php 
    $getLog = "Select * from tblUserLogs where UserID = $id ORDER BY LogID DESC limit 1"; 
    $loadLog = mysql_query($getLog); 
    while($Logs = mysql_fetch_array($loadLog)){ 
     $ID = $Logs['id']; 
     $LastLogin = date('F j, Y, g:i a', strtotime($Logs['LastLog'])); 
     //$myLast = date('F j, Y, g:i a', $LastLogin); 
     echo "<small>".$LastLogin."</small>"; 
    } 
?> 

然而,显示当前登录的日期和时间。

应该怎么做?它应该是极限2并显示最小的主键。有没有办法在mysql语句上做到这一点?

+0

如果在查询中使用ORDER BY LastLog,该怎么办?否则共享表结构来构建更好的查询。 –

+0

当前登录是您的最后一次登录。你期望得到什么? – sqlab

回答

0

我认为你要找的是一个偏移量,所以你避免了第一个入口。

LIMIT 1, 1 
+0

偏移量如何工作? – Clary

+0

对不起,我没有足够的解释 - 它会将数据抵消第一个数字的数量。所以通常情况下它会将其作为0,所以它开始限制返回的第一条记录中的数据。如果您将偏移量设置为1,它将从第一条记录开始,然后再限制为1,本质上为您提供第二条结果。 – Ryan

+0

感谢您的支持! :D – Clary

0

无论是用在哪里(如果你在你的表日期列)

SELECT * FROM tblUserLogs 
WHERE UserId = <id> 
AND loginDate <current login timestamp> 
ORDER BY loginDate DESC 

或者用LIMIT 1,1(跳过一个,需要一)

+0

应该是$ id吗? – Clary

+0

这不是PHP代码,只是简单的SQL与伪变量。你是对的,你需要'$ id'。但是,我无法强调这一点:使用参数化查询http://de2.php.net/manual/en/security.database.sql-injection.php –