程序功能设计
设置无限分类表
id title pid path
1 服装 0 0-1
2 上衣 1 0-1-2
3 长袖 2 0-1-2-3
编写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库,要求设计数据表内容以及使用php编码完成
数据表设计
分析数据表结构
id 标题 内容 添加时间 留言人
数据表创建语句
create table message(
'id' inde unsigned not null auto_increment primary key,
'title' varchar(120) not null default '' ,
'content' varchar(255) not null default '',
'create_at' int not null default '0',
'user_name' varchar(32) unsigned not null default '',
Key message_user_name(user_name)
) engine=innodb default charset=utf8;
php链接数据库的方式
pdo
可扩展性更好,支持预处理 面向对象
mysqlli
只支持mysql操作 支持预处理,面向对象和过程,效率较高
mysql
只支持mysql数据库 ,没有预处理的支持,面向过程
建议pdo
编码能力
pdo的基本操作
<?php
try{
//操作数据库的代码
$pdo =newPDO($dsn,$usetname,$password,$attr);
$sql='select id,title,content from message where user_name=:user_name';
$stmt=$pdo->prepare($sql);
$stmt->execute([':user_name'=>$user_name]);
$result=$stmt->fetchAll(PDO:FETCH_ASSOC);
}catch(PDOException $e){
echo $e->getMessage();
}
try{
//操作数据库的代码
$dsn='mysql:dbname=test;host=localhost';
$username='test';
$password='test';
$attr=[
PDO::ATTR_ERRMOOE=>PDO::ERRMOOE_EXCEPTION
];
$pdo =newPDO($dsn,$usetname,$password,$attr);
$sql='insert into message(title,content,created_at,user_name)
valuser(:title,:content,:created_at,:user_name)';
$stmt=$pdo->prepare($sql);//预处理
$data=[
':title'=>$title,
':content'=>$content,
':created_at'=>time(),
':user_name'=>$user_name
];
$stmt->execute($data);
$rows=$stmt->rowCount();
if($rows){
exit('添加成功');
}else{
exit('添加失败');
}
}catch(PDOException $e){
echo $e->getMessage();
}
网友评论