我是通过使用嵌套的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类型。
编辑:我应该补充一点,用户和消息匹配得很好,这只是订单不起作用。
答案 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
至于第二部分,我认为你的能力没有任何问题。也许您可以发布一些数据样本,看看是否有任何不同。