Php 对从数据库检索到的信息进行排序
我通过使用嵌套的while循环从数据库中检索信息来创建提要(有更好的方法吗?) 我有一个名为users的表,其中包括所有名称。另一个表称为messages,其中包含消息、发布它的用户和时间戳Php 对从数据库检索到的信息进行排序,php,mysql,timestamp,unix-timestamp,Php,Mysql,Timestamp,Unix Timestamp,我通过使用嵌套的while循环从数据库中检索信息来创建提要(有更好的方法吗?) 我有一个名为users的表,其中包括所有名称。另一个表称为messages,其中包含消息、发布它的用户和时间戳 $userQuery = mysql_query("SELECT name FROM users"); while ($user = mysql_fetch_array($userQuery, MYSQL_NUM)) { $messageQuery = mysql_query("SELECT mes
$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类型
编辑:我应该补充一点,用户和消息匹配得很好,只是排序不起作用。我猜您的用户或多或少都是随机排序的,“在”一个用户中排序是可以的 使用:
这将为您提供一个有序的结果(至少如果您有一个名为messages.timestamp的列,请检查名称;-)。和一个查询中的所有内容…对于该查询,您可以创建一个联接
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
至于第二部分,我看不出你的罐头有什么问题。也许你可以发布一些数据样本,看看是否有什么不同。;)你更快了,删除了我的答案
name.u
,message.m
你确定吗?可能是u.name
和m.message
?哈哈。。是 啊我第二部分是对的,第一部分是错的。我不应该在半睡半醒的时候回答问题:)谢谢你指出这一点。
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