编写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库,要求数据表内容以及使用PHP编码完成
数据表设计
- 分析数据表结构 留言信息:id,标题,内容,时间,留言人
- 数据表的创建:留言本表:message
creat table message(
'id' int unsigned not null auto_increment primary key,
'title' varchar(200) not null default '',
'content' varchart(300) not null default '',
'creat_time' int not null default '0',
'user_name' varchar(30) unsigned not null default '',
key message_user_name(user_name)
)engine=InnoDb default charset=utf8;
选择连接数据库的方式
- PDO:可扩展性更好,支持 预处理,面向对象
- mysqli:支持支MySQL操作,支持预处理,效率比PDO高
- PDO基本操作
$pdo = new PDO($dsn,$username,$password,$attr);
$sql = 'select id,title,content from message where user_name = :user_name';
$ject = $pdo -> prepare($sql);
$ject -> execut([':user_name' => $user_name]);
$result = $ject -> fetchALL(PDO::FETCH_ASSOC);
创建form表单
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>留言本</title>
</head>
<body>
<form action="store.php" method="post">
标题: <input type="text" name="title">
内容: <input type="text" name="content">
留言人: <input type="text" name="user_name">
<input type="submit" vakue="添加">
</form>
</body>
</html>
store.php
// 标题
$title = $_POST['title'];
// 内容
$content = $_POST['content'];
// 留言人
$user_name = $_POST['user_name'];
if (empty($title) || empty($content) || empty($user_name)) {
exit('数据不能为空');
}
try {
// 配置
$dsn = 'mysql:dbname=test;host=localhost';
// 用户名
$username = 'test';
// 密码
$password = 'test';
//竖向
$attr = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
// 链接PDO
$pdo = new PDO($dsn, $username, $password, $attr);
// 编写sql语句
$sql = 'insert into message (title, content, user_name, creat_time) values (:title, :content, :user_name, :creat_time)';
// 预处理
$stmt = $pdo->prepare($sql);
$data = [
':$title' => $title,
':content' => $content,
':user_name' => $user_name,
':creat_time' => time(),
];
$stmt->execute($data);
$row = $stmt->rowCount();
if ($row) {
echo '添加成功';
} else {
echo '添加失败';
}
} catch (PDOException $exception) {
// 异常
echo $exception->getMessage();
}
例:设计一个无线分类表
id title pid 1 服装 0 2 上衣 1 3 长袖 2
id title pid path 1 服装 0 0-1 2 上衣 1 0-1-2 3 长袖 2 0-1-2-3