【程序功能设计】先写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库,要求书籍数据表内容以及使用PHP编码完成。
文章目录
- 一、考点
- 1、数据表设计
- 分析数据表结构
- 留言板有哪些信息需要存储?
- 2、数据表创建语句
- 3、选择PHP连接数据库的方式
- 1)PDO【推荐使用】
- 2)MySQLi
- 3)MySQL库
- 4、编码能力
- 1)PDO的基本操作
- 2)操作数据库代码
- 3)代码实现
- 二、解题方法
- 三、真题
- 设计一个无限分类表
- 1)方法一:存 id,title,在表中加一个 `pid`,再配合递归实现。【推荐使用】
- 2)方法二:存 id,title,加 `pid` 和 `path` (path是为了显示顺序,如果不加 path的话,需要用递归才能把级别显示出来)
- 综上所述,此题推荐使用 `pid` + 递归的方法实现,`pid` 关联的是 `主键ID`。
一、考点
1、数据表设计
分析数据表结构
留言板有哪些信息需要存储?
- 留言信息:ID,留言标题,留言内容,留言时间,留言人
2、数据表创建语句
// 留言本表 message
create table message(id int unsigned not null auto_increment primary key,title varchar(120) not null default '',content varchar(255) not null default '',created_at int unsigned not null default '0',user_name varchar(32) not null default '',key message_user_name(user_name)
)engine=innodb default charset=utf8;
3、选择PHP连接数据库的方式
1)PDO【推荐使用】
- 可扩展性更好、支持预处理、面向对象
- 推荐使用PDO,因为扩展性非常好,将来换其他库也是没有问题的,而且它里面的方法都是比较完善的。
2)MySQLi
- 只支持MySQL操作(不支持其他库)、支持预处理、面向对象和过程,效率较高(效率比PDO稍微高点)
3)MySQL库
- 只支持MySQL数据库、没有预处理的支持、面向过程
4、编码能力
1)PDO的基本操作
try {// 操作数据库代码// ...
} catch(PDOException $e) {echo $e->getMessage();
}
2)操作数据库代码
// 操作数据库代码
$pdo = new PDO($dsn, $username, $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);
3)代码实现
① 准备一个表单 form.html
<!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"><br>内容:<textarea name="content" cols="30" rows="10"></textarea><br>留言人:<input type="text" name="user_name"><br><input type="submit" value="添加"></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('标题或者内容或者用户名不能为空');
}// PDO操作数据库
try {$dsn = 'mysql:dbname=test; host=localhost';$username = 'root';$password = '123456';$attr = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];$pdo = new PDO($dsn, $username, $password, $attr);$sql = 'insert into message(title, content, created_at, user_name) values(: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();
}
二、解题方法
根据考题所出功能,先分析应该存储哪些信息,设计好数据表,这一步很关键,如果编码时才发现设计有问题,会浪费大量的时间,基本没有时间改,所以要先设计好,然后根据设计好的数据表创建数据表,通常建议大家使用PDO来连接MySQL,最终完成编码,所以一定要熟悉PDO的基本操作。
三、真题
设计一个无限分类表
1)方法一:存 id,title,在表中加一个 pid
,再配合递归实现。【推荐使用】
id | title | pid |
---|---|---|
1 | 服装 | 0 |
2 | 上衣 | 1 |
3 | 长袖 | 2 |
2)方法二:存 id,title,加 pid
和 path
(path是为了显示顺序,如果不加 path的话,需要用递归才能把级别显示出来)
id | title | pid |
path(pid + id )
|
---|---|---|---|
1 | 服装 | 0 |
0- 1
|
2 | 上衣 | 1 |
0-1- 2
|
3 | 长袖 | 2 |
0-1-2- 3
|
综上所述,此题推荐使用 pid
+ 递归的方法实现,pid
关联的是 主键ID
。
【程序功能设计】先写一个在线留言本,实现用户的在线留言功能,留言信息存储到数据库,要求书籍数据表内容以及使用PHP编码完成。相关推荐
- 用小程序云开发写一个多人记账小程序
应女朋友要求,用小程序云开发写一个记账小程序,适合情人记账.家庭记账.团队记账.多人记账的小程序 先上成品图吧 主页: 记账页: 详情页: 个人中心页: 统计页: 其余的页面就不一一展示了,使用到的主 ...
- 根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。
一.问题: 现有商品列表如下: 1.products = [["iphone",6888],["MacPro",14800],["小米6", ...
- mysql一个表中可以有几个主键_数据库的单个数据表中有几个主键?
数据库的单个数据表中只能有一个主键.数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性:主键主要是用与其他表的外键关联,以及本记录的修改与删除. 数据库的单 ...
- 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...
- 微信小程序入坑: 写一个简化版知乎日报
最近开始入坑微信小程序,发现想要练手也不容易,找免费的基于HTTPS的API就要花点时间.在看了网上一些介绍后,决定采用知乎日报的API,写一个简单版的知乎日报作为入坑练习.本文尝试使用微信小程序写一 ...
- python写一个表白程序-用Python写一个表白神器让你脱单
原标题:用Python写一个表白神器让你脱单 来自公众号:Python编程时光 今天是什么节日,就不用小明说了吧? 有女朋友的,该准备的礼物买了吗? 没有对象的,表白的套路学会了吗? 还没有?好吧,你 ...
- 修改程序配置文件 以及写一个结构体数组到文件(以及整数和结构体)
1.修改配置文件 这个mycp 是上一节的 这是TEST.config 代码需用到strstr 这个就是代码 结果这么写不对,缺点东西 改正完的结果是什么呢 ? 这个必须得打开文件 可不可以在外 ...
- 两个字符串连接程序C语言,写一个函数,将两个字符串连接。 C语言
写一个函数,将两个字符串连接. 以下是此题的[c源代码],需要[c++源代码]请点击进入 #include int main() {void concatenate(char string1[],ch ...
- java连连看小程序,用JS写一个连连看小程序
思路 决定内容区域的大小和图片种类数量 图片应该放多少行,多少列.必须是偶数 整个区域应该是在图片外多围上一圈,也就是行数和列数都应该比图片的多1 放多少对图片,一对两张.注意对数不能超过所有图片总数 ...
最新文章
- 屡现黑马!2021THE泰晤士高等教育学科排名发布!斯坦福成为最大赢家,清华、北大强势逆袭!...
- javap(反汇编命令)详解【转】
- 两次服务器灾难事故的反思
- DEVICE_ATTR实例分析
- CodeForces 699A Launch of Collider
- Win32-Application的窗口和对话框
- yii2框架获取刚插入数据库的id (原创)
- 【前端基础知识】chrome安装React Devtools
- javascript 编程指南
- https 带端口_基于scapy模块的8种端口扫描
- 无pygame写一个python贪吃蛇
- 2022-09-13 mysql列存储引擎-POC-查询数据错误追踪
- 单词风暴2009免费分享版
- linux date 4 2,JZ2440 linux-3.4.2内核启动报错:Verifying Checksum ... Bad Data CRC(示例代码)...
- 大学生企业计算机应用能力需求调研,五个专业计算机能力需求调研分析论文
- 汽车销量查询小助手(小程序)开发心路历程
- 2022最新whatsapp接收不到验证码解决方法
- 面试刷题LeetCode经典100道
- Excel除了复制粘贴,更快速的将单元格区域的公式转换成数值?
- 世界计算机科学大会,【计算机视觉】世界三大顶级会议介绍
热门文章
- 学习笔记-WVA-MOEAD
- mysql INSTR的用法
- 论文阅读 | BMBC:Bilateral Motion Estimation with Bilateral Cost Volume for Video Interpolation
- JAVA调用Matlab代码(MATLAB 2014a)
- 常用的SSM整合方式
- 14寸macbook pro真机评测
- 浅谈PHP实现订阅消息添加到个人模板库
- GBase 8s 常用管理员命令汇总-gadmin
- TabHost+ViewPager+Fragment实现页面的滑动,android开发工具deve
- 关于TureNas的Vdev