2011-05-14 48 views
3

我正在自动滚动成员.i有两个mysql查询,我想显示有照片的成员和上次登录时排序的成员。所以在第一盘我没有任何问题,因为我这样做mysql查询,其中有两条子句

$sql=mysql_query("SELECT * 
        FROM accounts 
        WHERE avatar != '' 
       ORDER BY lastlogin DESC 
        LIMIT 50"); 

这工作正常。 但随着用户滚动并进入页面的底部,我正试图加载下一组50个用户,通过上面所做的相同过滤来排序。 所以对于我所做的

$sql = mysql_query("SELECT * 
         FROM accounts 
        WHERE lastlogin < '$last_msg_id' 
        ORDER BY lastlogin DESC 
        LIMIT 50"); 

上面一个用于从上次登录发现第51届成员的最后一次登录即ID的ID。现在我必须过滤那些有照片的成员:

$sql = mysql_query("SELECT * 
         FROM accounts 
        WHERE avatar != '' 
        ORDER BY lastlogin DESC 
        LIMIT 50"); 

请告诉我如何结合这两个查询,因为我没有成功。

+0

TJ的答案对你有帮助吗?你对这里收集到的答复有任何反馈吗? – 2011-05-31 23:55:42

回答

6

如果我正确理解你的问题,我想你只需要一个精心布置的AND,像这样:

SELECT * 
    FROM accounts 
    WHERE lastlogin < '$last_msg_id' 
    AND avatar != '' 
ORDER BY lastlogin desc limit 50 

这就是你想做什么?

+1

+1:我就是这么读的。 – 2011-05-14 05:47:06

+0

我读的方式不同:他想使用'limit x offset y'。 – 2011-05-14 09:27:45

+0

@Denis:这将是一个更好的方法,但他已经用他的'lastlogin <'$ last_msg_id''条款破解了它。问题是关于将该子句与'avatar'上的条件合并。 – 2011-05-31 23:55:09

-1

,如果你有任何这样的查询可以随时打开phpMyAdmin的,并使用搜索标签尝试搜索...这样你的查询,自动生成无错..

+0

如何用phpmysql来做到这一点。请告诉我有搜索选项卡,并告诉如何从phpmyadmin – 2011-05-14 06:09:08

+0

@sujit ...生成php vcode这个例子,以及每当你搜索的东西,它会自动生成输出上方的相关sql查询...你不必做任何额外的东西...... – Pawan 2011-05-20 18:31:30

+0

这应该是一个评论,Pawan,而不是一个答案。 – 2011-05-31 23:55:21

3

我想你想什么do只是显示第一个查询的结果(带有头像的用户列表),但是以每页50个块的形式显示。

在这种情况下,你真正想要做的是使用LIMIT和2个参数。 (有关详细信息,请参见MySQL SELECT syntax)。

当您使用带两个参数的LIMIT时,第一个是要开始的偏移量,第二个是最大记录数。因此,举例来说:

SELECT * FROM accounts LIMIT 0,50; # Retrieves users 1-50 
SELECT * FROM accounts LIMIT 50,50; # Retrieves users 51-100 
SELECT * FROM accounts LIMIT 100,50; # Retrieves users 101-150 
            # etc. 

如果这不是你的意思是做什么,然后T.J.的回答(刚加入一个与有两个WHERE子句)是要走的路!