實現最精簡的留言本核心流程:用戶發布留言 → 寫入資料庫 → 前台顯示所有留言。暫不處理分頁、跳轉等進階功能,專注於核心邏輯。
CREATE DATABASE guest_book;
CREATE TABLE `contents` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL DEFAULT 'no name',
`content` mediumtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6;
| 檔案 | 功能 |
|---|---|
| post.htm | 留言提交表單(HTML) |
| updata.php | 接收表單資料、寫入資料庫 |
| index.php | 讀取資料庫、顯示所有留言 |
<form action="updata.php" method="post">
姓名: <input type="text" name="user_name"><br>
留言: <textarea name="post_contents" rows="10" cols="50"></textarea><br>
<input type="submit" value="送出">
</form>
<?php
$name = $_POST['user_name'];
$content = $_POST['post_contents'];
$conn = mysql_connect("localhost:6033", "root", "");
mysql_query("SET NAMES utf8"); // 解決中文亂碼
mysql_select_db("guest_book");
$sql = "INSERT INTO contents (name, content) VALUES ('$name', '$content')";
mysql_query($sql);
?>
關鍵點:
6033 需對應 phpMyAdmin 顯示的實際埠口SET NAMES utf8 必須在查詢前執行,防止儲存/讀取亂碼mysql_real_escape_string 或預處理<?php
$conn = mysql_connect("localhost:6033", "root", "");
mysql_select_db("guest_book");
mysql_query("SET NAMES utf8");
$sql = "SELECT * FROM contents";
$result = mysql_query($sql);
while ($rs = mysql_fetch_object($result)) {
echo "<table><tr><td>姓名: {$rs->name}</td></tr>";
echo "<tr><td>留言: {$rs->content}</td></tr></table><br/>";
}
?>
127.0.0.1,請在 phpMyAdmin 首頁確認「伺服器主機名」與「埠號」CHARSET=utf8、連線 SET NAMES utf8、HTML <meta charset="utf-8"> 三者一致error_reporting(E_ALL); ini_set('display_errors', 1);password_hash() 若未來加入用戶系統htmlspecialchars() 輸出轉義防 XSS這個「麻雀雖小」的留言本包含了 Web 開發最基礎的「表單 → 處理 → 存儲 → 讀取 → 顯示」完整閉環。掌握這套流程,再學習框架、ORM、API 開發就有了堅實的地基。