加载MySql表从下到上- PHP


Load MySql table from bottom to top - PHP

今天是我第一天接触PHP或MySQL…我试着做一个简单的聊天程序……它工作得很好,但它首先显示旧的聊天记录,最后(在页面底部)显示最新的聊天记录。我如何以相反的顺序加载表?所以它在HTML表的顶部显示数据库表底部的前一行?

这是我的代码…全部在名为"Chat.php"的文件中

<html><head></head><body>
<form action="chat.php" method="post">
Message: <br><textarea type="text" name="message" style="width:80%; height:300px;"></textarea><br>
<input type="submit" />
</form>
<?php
$host="****";
$user="****";
$password="****";
$cxn = mysql_pconnect ($host, $user, $password);
mysql_select_db("defaultdb", $cxn);
if (getenv(HTTP_X_FORWARDED_FOR)) {
    $ipaddress = getenv(HTTP_X_FORWARDED_FOR);
} else {
    $ipaddress = getenv(REMOTE_ADDR);
}
$message = $_POST["message"];
mysql_query("INSERT INTO ChatTest (ID, TimeStamp, Message) VALUES ('$ipaddress', NOW(), '$message')");
$data = mysql_query("SELECT * FROM ChatTest") or die(mysql_error()); 
 Print "<table border cellpadding=3>"; 
 Print "<tr>"; 
 Print "<th>ID:</th><th>TimeStamp:</th><th>Message:</th>";
 while($info = mysql_fetch_array( $data )) { 
 Print "<tr>"; 
    Print " <td>".$info['ID'] . "</td> "; 
    Print " <td>".$info['TimeStamp'] . " </td>";
    Print " <td>".$info['Message'] . "</td></tr>"; 
 } 
 Print "</table>"; 
mysql_close($cxn);

?>
</body></html>

你要找的是MySQL的ORDER BY语句。您可以使用它来告诉DBMS您希望以何种顺序获得结果。

SELECT * FROM ChatTest
ORDER BY `TimeStamp` DESC

还有一件事& help;

我知道这是你的第一次尝试,所以会有错误是可以理解的。然而,有一件事,你应该马上学习SQL注入。

考虑一个用户消息为

的例子
0'); DROP TABLE ChatTest --

那么你的查询就变成了

INSERT INTO ChatTest (ID, TimeStamp, Message)
VALUES ('$ipaddress', NOW(), '0'); DROP TABLE ChatTest --')

为了防止这种情况,总是通过mysql_real_escape_string()运行用户输入,像这样:

$message = mysql_real_escape_string($_POST['message']);

明确指定排序键:

$data = mysql_query("SELECT * FROM ChatTest ORDER BY PostDate DESC") or die(mysql_error());