Blogger Information
Blog 26
fans 0
comment 0
visits 21815
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数据库基础与常用操作
溪边小树
Original
854 people have browsed it

数据库

1. 发展

  • 以文件/文档的方式进行手工管理
  • 数据库的方式管理
  • 关系型数据库:MySQL
  • 关系: 表格
  • 免费, 大厂产品, 社区活跃

2. 管理工具

  • phpmyadmin:web
  • mysql workbench: MySQL 工作台
  • Navicat: 好用收费
  • DBeaver: 免费客户端工具
  • Adminer.php

3. 术语

  • 数据库: 目录
  • 数据表: 目录中的文件, .dbf
  • 字段: 也叫’列’
  • 记录: 也叫’行’,是由一个或多个字段组成
  • 键: 是用来标识记录的

4. 数据类型

  • 数值型: int
  • 字符型: char
  • 日期时间型: date, datetime

5. 常用指令

  1. 操作方式: 增删改查: CURD
  2. 数据是否变化: 分为读与写二种
    读: 查询 select
    写: 增加 insert, 更新 update, 删除 delete

连接数据库

config/database.php

  1. <?php
  2. namespace pdo_edu;
  3. // 数据库连接配置参数
  4. return [
  5. // 数据库的类型
  6. 'type' => $type ?? 'mysql',
  7. // 数据库默认主机
  8. 'host' => $host?? 'localhost',
  9. // 默认数据库
  10. 'dbname'=> $dbname ?? 'phpedu',
  11. // 默认字符编码集
  12. 'charset'=> $charset ?? 'utf8',
  13. // 默认端口号
  14. 'port'=> $port ?? '3306',
  15. // 默认的用户名
  16. 'username'=> $username ?? 'root',
  17. // 默认的用户密码
  18. 'password'=> $password ?? 'root',
  19. ];

connect.php

  1. <?php
  2. // 连接数据库
  3. namespace pdo_edu;
  4. use Exception;
  5. use PDO;
  6. // 加载配置参数
  7. $config = require 'config/database.php';
  8. // PDO: PHP Data Object, php数据对象
  9. // pdo可以让php对所有类型的数据库, 提供了一个统一的,轻量级的访问接口
  10. // PDO连接数据库三要素, 三个重要参数,
  11. // 数据源: DSN
  12. // 用户名: username
  13. // 用户密码: password
  14. // DSN: 数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=... ;port= ...
  15. // $dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';
  16. $type = $config['type'];
  17. $host = $config['host'];
  18. $dbname = $config['dbname'];
  19. $username = $config['username'];
  20. $password = $config['password'];
  21. // 创建DSN
  22. $dsn = sprintf('%s:host=%s;dbname=%s', $type,$host,$dbname);
  23. try {
  24. // 连接数据库
  25. $pdo = new PDO($dsn, $username, $password);
  26. // var_dump($pdo);
  27. } catch (Exception $e) {
  28. die($e->getMessage());
  29. }

增删改查操作示例

1、select1.php,查询条件:age>40

数据表内容:


查询结果显示:

  1. <?php
  2. // 数据表查询: 单条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  9. $sql = 'SELECT `id`,`name` FROM `staffs` WHERE `age` > 40';
  10. // 预处理对象$stmt:为了防止 SQL注入
  11. $stmt = $pdo->prepare($sql);
  12. // 预处理对象$stmt , 就是SQL语句对象
  13. // 使用预处理对象调用 execute()执行这条sql语句
  14. $stmt->execute();
  15. // 使用:debugDumpParams()调试/查看
  16. // var_dump($stmt->debugDumpParams());
  17. // 获取表中一条记录
  18. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  19. // printf('<pre>%s</pre>',print_r($staff,true));
  20. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  21. // printf('<pre>%s</pre>',print_r($staff,true));
  22. // $staff = $stmt->fetch(PDO::FETCH_ASSOC);
  23. // printf('<pre>%s</pre>',print_r($staff,true));
  24. // 如果再也没有满足条件的记录, 会返回false
  25. while ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {
  26. printf('<pre>%s</pre>',print_r($staff,true));
  27. }
  28. // 3. 关闭连接[可选]
  29. // $pdo = null;
  30. unset($pdo);

select2.php

  1. <?php
  2. // 数据表查询: 多条查询
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE 查询条件 '
  9. // 匿名占位符: ?
  10. // $sql = 'SELECT * FROM `staffs` WHERE `age` > ?';
  11. // 命名占位符: 给一个有意义 的字符串, 必须用冒号开始
  12. $sql = 'SELECT * FROM `staffs` WHERE `age` > :age';
  13. // 预处理对象$stmt:为了防止 SQL注入
  14. $stmt = $pdo->prepare($sql);
  15. // 预处理对象$stmt , 就是SQL语句对象
  16. // 使用预处理对象调用 execute()执行这条sql语句
  17. // 对应匿名占位符使用是索引数组
  18. // $stmt->execute([50]);
  19. // 对应命名占位符使用是关联数组
  20. $stmt->execute(['age'=>60]);
  21. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  22. // print_r($staffs);
  23. foreach ($staffs as $staff) {
  24. $date = date('Y年m月d日', $staff['hiredate']);
  25. printf('id=%s:姓名=%s---职位=%s---入职时间=%s<br>', $staff['id'], $staff['name'], $staff['position'], $date);
  26. }
  27. // 3. 关闭连接[可选]
  28. // $pdo = null;
  29. unset($pdo);
  30. // fetch()
  31. // fetchAll()

2、insert.php

  1. <?php
  2. // 数据表新增记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = 'INSERT 表名 SET name=?, age=?,.... ';
  9. $sql = "INSERT `staffs` SET `name`= ? , `age`=?, `sex`=?, `position`=?, `mobile`=?, `hiredate`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $data = ['朱老师', 66, 1, '讲师', '18977665544', 1579244075];
  12. $stmt->execute($data);
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '新增成功, 新增记录的主键是: ' . $pdo->lastInsertId();
  17. } else {
  18. echo '新增失败';
  19. print_r($stmt->errorInfo());
  20. }
  21. // 3. 关闭连接[可选]
  22. unset($pdo);

3、update.php

  1. <?php
  2. // 数据表更新记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件"
  9. $sql = "UPDATE `staffs` SET `name` = ? WHERE `id`=?";
  10. $stmt = $pdo->prepare($sql);
  11. $stmt->execute(['王老师', 11]);
  12. // 判断是否执行成功
  13. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  14. if ($stmt->rowCount() === 1) {
  15. echo '更新成功';
  16. } else {
  17. echo '没有记录被更新';
  18. print_r($stmt->errorInfo());
  19. }
  20. // 3. 关闭连接[可选]
  21. unset($pdo);

4、delete.php

  1. <?php
  2. // 数据表删除记录
  3. namespace pdo_edu;
  4. use PDO;
  5. // 1. 连接数据库
  6. require 'connect.php';
  7. // 2. 操作数据表(CURD)
  8. // $sql = "DELETE FROM 表名 WHERE 删除条件"
  9. $sql = "DELETE FROM `staffs` WHERE `id`=:id";
  10. $stmt = $pdo->prepare($sql);
  11. $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
  12. $stmt->execute(['id'=>$_GET['id']]);
  13. // 判断是否执行成功
  14. // $stmt->rowCount(): 返回写操作产生的受影响的记录数量
  15. if ($stmt->rowCount() === 1) {
  16. echo '删除成功';
  17. }
  18. // 3. 关闭连接[可选]
  19. unset($pdo);

课程学习小结

本次课程老师讲解非常细致,我也认真回看了视频,并实操了每一段代码予以加深理解,对原本感觉有神秘面纱的数据库内容进行了第一次成功实操,使用了phpstudy自带的MySQL5.7.26数据库及navicat管理工具,当第一次修改完成相关设置参数并实现查询、新增、更新、删除等功能的时候,内心还是有点小窃喜的,满足学习带来的小乐趣,后续将花更多时间深入学习。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:如果学习给你带了成就感, 那就好好坚持下去
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post