文章目录

  • 一、考点
    • 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,加 pidpath (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编码完成。相关推荐

  1. 用小程序云开发写一个多人记账小程序

    应女朋友要求,用小程序云开发写一个记账小程序,适合情人记账.家庭记账.团队记账.多人记账的小程序 先上成品图吧 主页: 记账页: 详情页: 个人中心页: 统计页: 其余的页面就不一一展示了,使用到的主 ...

  2. 根据上面的products列表写一个循环,不断询问用户想买什么,用户选择一个商品编号,就把对应的商品添加到购物车里,终用户输入q退出时,打印购买的商品列表。

    一.问题: 现有商品列表如下: 1.products = [["iphone",6888],["MacPro",14800],["小米6", ...

  3. mysql一个表中可以有几个主键_数据库的单个数据表中有几个主键?

    数据库的单个数据表中只能有一个主键.数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性:主键主要是用与其他表的外键关联,以及本记录的修改与删除. 数据库的单 ...

  4. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧

    写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...

  5. 微信小程序入坑: 写一个简化版知乎日报

    最近开始入坑微信小程序,发现想要练手也不容易,找免费的基于HTTPS的API就要花点时间.在看了网上一些介绍后,决定采用知乎日报的API,写一个简单版的知乎日报作为入坑练习.本文尝试使用微信小程序写一 ...

  6. python写一个表白程序-用Python写一个表白神器让你脱单

    原标题:用Python写一个表白神器让你脱单 来自公众号:Python编程时光 今天是什么节日,就不用小明说了吧? 有女朋友的,该准备的礼物买了吗? 没有对象的,表白的套路学会了吗? 还没有?好吧,你 ...

  7. 修改程序配置文件 以及写一个结构体数组到文件(以及整数和结构体)

    1.修改配置文件  这个mycp 是上一节的  这是TEST.config 代码需用到strstr 这个就是代码 结果这么写不对,缺点东西 改正完的结果是什么呢 ? 这个必须得打开文件  可不可以在外 ...

  8. 两个字符串连接程序C语言,写一个函数,将两个字符串连接。 C语言

    写一个函数,将两个字符串连接. 以下是此题的[c源代码],需要[c++源代码]请点击进入 #include int main() {void concatenate(char string1[],ch ...

  9. java连连看小程序,用JS写一个连连看小程序

    思路 决定内容区域的大小和图片种类数量 图片应该放多少行,多少列.必须是偶数 整个区域应该是在图片外多围上一圈,也就是行数和列数都应该比图片的多1 放多少对图片,一对两张.注意对数不能超过所有图片总数 ...

最新文章

  1. 屡现黑马!2021THE泰晤士高等教育学科排名发布!斯坦福成为最大赢家,清华、北大强势逆袭!...
  2. javap(反汇编命令)详解【转】
  3. 两次服务器灾难事故的反思
  4. DEVICE_ATTR实例分析
  5. CodeForces 699A Launch of Collider
  6. Win32-Application的窗口和对话框
  7. yii2框架获取刚插入数据库的id (原创)
  8. 【前端基础知识】chrome安装React Devtools
  9. javascript 编程指南
  10. https 带端口_基于scapy模块的8种端口扫描
  11. 无pygame写一个python贪吃蛇
  12. 2022-09-13 mysql列存储引擎-POC-查询数据错误追踪
  13. 单词风暴2009免费分享版
  14. linux date 4 2,JZ2440 linux-3.4.2内核启动报错:Verifying Checksum ... Bad Data CRC(示例代码)...
  15. 大学生企业计算机应用能力需求调研,五个专业计算机能力需求调研分析论文
  16. 汽车销量查询小助手(小程序)开发心路历程
  17. 2022最新whatsapp接收不到验证码解决方法
  18. 面试刷题LeetCode经典100道
  19. Excel除了复制粘贴,更快速的将单元格区域的公式转换成数值?
  20. 世界计算机科学大会,【计算机视觉】世界三大顶级会议介绍

热门文章

  1. 学习笔记-WVA-MOEAD
  2. mysql INSTR的用法
  3. 论文阅读 | BMBC:Bilateral Motion Estimation with Bilateral Cost Volume for Video Interpolation
  4. JAVA调用Matlab代码(MATLAB 2014a)
  5. 常用的SSM整合方式
  6. 14寸macbook pro真机评测
  7. 浅谈PHP实现订阅消息添加到个人模板库
  8. GBase 8s 常用管理员命令汇总-gadmin
  9. TabHost+ViewPager+Fragment实现页面的滑动,android开发工具deve
  10. 关于TureNas的Vdev