所以我刚写了这个小脚本。问题是我想在底部的最新消息不在顶部所以我需要从mysql查询中获取结果并重新排序它们然后回显它们...感谢任何帮助......
编辑:DESC
是正确的顺序,while循环是问题..因为php逐行运行
P.S。请不要担心我稍后会添加的安全功能。
<?php
mysql_connect('localhost', '', '');
mysql_select_db('');
if(isset($_POST['submit'])) {
date_default_timezone_set('America/New_York');
$_POST['username'] = 'Guest';
//$_POST['message'] = "Hello my name is Guest!";
mysql_query("INSERT INTO chat (username,message,date,time) VALUES ('".$_POST['username']."','".$_POST['message']."','".date('n.j.o g:i:s A')."','".time()."')");
}
$result = mysql_query("SELECT * FROM chat ORDER BY time DESC LIMIT 10");
while ($row = mysql_fetch_assoc($result)) {
$username = $row['username'];
$message = $row['message'];
$date = $row['date'];
echo "<div><b>".$username.":</b> ".$message." <i>".$date."</i></div>";
}
?>
<form method="post">
<input name="message" />
<input type="submit" name="submit" value="Send"/>
</form>
<br />
答案 0 :(得分:2)
您可以尝试嵌套查询
SELECT * FROM (
SELECT * FROM chat ORDER BY time DESC LIMIT 10
) AS inner ORDER BY time ASC;
所以内部查询获取最近的10条记录,然后外部查询反转排序顺序。
另一种方法是在PHP中将结果集提取到数组中,然后以相反的顺序输出。
答案 1 :(得分:1)
您可以通过先存储所有结果并稍后访问它们来轻松颠倒PHP中的顺序:
<?php
$records = array();
while ($row = mysql_fetch_assoc($result)) {
$records[] = $row;
}
$records = array_reverse($records);
foreach ($records as $row) {
$username = $row['username'];
$message = $row['message'];
$date = $row['date'];
echo "<div><b>".$username.":</b> ".$message." <i>".$date."</i></div>";
}