从数据库中排序检索到的信息

时间:2011-07-25 18:57:25

标签: php mysql timestamp unix-timestamp

我是通过使用嵌套的while循环从我的数据库中检索信息来创建一个feed(有更好的方法吗?)。

我有一个名为users的表,其中包含所有名称。另一个表称为消息,其中包含消息,发布消息的用户以及时间戳。

$userQuery = mysql_query("SELECT name FROM users");
while ($user = mysql_fetch_array($userQuery, MYSQL_NUM)) {
    $messageQuery = mysql_query("SELECT message FROM messages WHERE user = $user ORDER BY timestamp DESC");
    while ($message = mysql_fetch_array($messageQuery, MYSQL_NUM)) {
        echo "$user[0]: $message[0]";
    }
}

问题是它没有按时间戳排序,我不知道它是如何排序的。我已经尝试过使用UNIX时间戳的timestamp,datetime和int类型。

编辑:我应该补充一点,用户和消息匹配得很好,这只是订单不起作用。

2 个答案:

答案 0 :(得分:0)

我猜你的用户或多或少是随机的,并且“在”一个用户内部,排序是好的吗?!

使用:

$result = mysql_query('select users.name,messages.message from messages join users on (users.name=messages.user) order by messages.timestamp');
while($row = mysql_fetch_row($result))
    echo "$row[0]: $row[1]";

这应该给你一个有序的结果(至少你有一个名为messages.timestamp的列。检查名称;-))。所有这些都在一个查询......

答案 1 :(得分:0)

对于查询,您可以创建联接

SELECT u.name as name, m.message as message
FROM users u inner join messages m
on u.user = m.user
order by 
m.timestamp DESC

至于第二部分,我认为你的能力没有任何问题。也许您可以发布一些数据样本,看看是否有任何不同。