从下到上加载MySql表 - PHP

时间:2011-11-14 00:18:02

标签: php mysql html-table chat

今天是我第一天搞乱PHP或MySQL ......我试着制作一个简单的聊天程序......它运行得很好但它首先显示旧聊天和最新聊天(位于我的底部) table)last(在页面底部)..如何以相反的顺序加载表?那么它在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>

2 个答案:

答案 0 :(得分:4)

您正在寻找的是MySQL的ORDER BY声明。您可以使用它来告诉DBMS您希望结果的顺序。

SELECT * FROM ChatTest
ORDER BY `TimeStamp` DESC

还有另一件事......

我意识到这是你的第一次尝试,所以可以理解的是会有错误。但是,有一件事,你立即了解SQL Injections

考虑用户消息为

的示例
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']);

答案 1 :(得分:2)

明确指定您的排序键:

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