博主信息
博文 43
粉丝 1
评论 0
访问量 43218
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP数据库的增删改查
蔚蓝世纪
原创
855人浏览过

我们对数据库内容的操作,按操作方式可以分为增删改查(CURD),按数据是否变化:分为读与写两种。读:即是查询(select),写:即是增加(insert),更新(update),删除(delete)。
如下图,我们创建了张原始数据表

接下来,我们要对这个数据库的内容进行增删改查的操作。
首先需要配置数据库参数

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

接着创建”connect.php”代码,这个是连接桥梁。

  1. namespace pdo_edu;
  2. use Exception;
  3. use PDO;
  4. //加载配置参数
  5. $config = require 'config/database.php';
  6. //PDO连接数据库三要素,三个重要参数:
  7. //数据源:DSN
  8. //用户名:username
  9. //用户密码:password
  10. //DSN :数据库类型:host=数据库的主机地址;dbname=默认的数据库名称;chart=...;prot=...
  11. $type = $config['type'];
  12. $host = $config['host'];
  13. $dbname = $config['dbname'];
  14. $username = $config['username'];
  15. $password = $config['password'];
  16. //创建DSN
  17. $dsn = sprintf('%s:host=%s;dbname=%s',$type,$host,$dbname);
  18. try {
  19. //连接数据库
  20. $pdo = new PDO($dsn,$username,$password);
  21. }catch(Exception $e) {
  22. die($e->getMessage());
  23. }

一、数据库的查询

可以分为单条查询和多条查询。
1.单条查询代码举例:

  1. namespace pdo_edu;
  2. use PDO;
  3. // 1.连接数据库
  4. require 'connect.php';
  5. // 2.操作数据表
  6. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE查询条件'
  7. $sql = 'SELECT `id`, `name` FROM `staffs` WHERE `age` >40';
  8. //预处理对象:
  9. $stmt = $pdo->prepare($sql);
  10. //预处理对象¥stmt,就是SQL语句对象
  11. //使用预处理对象调用 execute()执行这条sql语句
  12. $stmt->execute();
  13. //使用:debugDumpParams()调试/查看
  14. // var_dump($stmt->debugDumpParams());
  15. while ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {
  16. printf('<pre>%s</pre>',print_r($staff,true));
  17. }
  18. // 3.关闭连接(以下两种方式可任选一种)
  19. // $pdo = null;
  20. unset($pdo);

查询到的结果输出:

2.多条查询代码举例:

  1. namespace pdo_edu;
  2. use PDO;
  3. // 1.连接数据库
  4. require 'connect.php';
  5. // 2.操作数据表
  6. // $sql = 'SELECT 字段列表 FROM 数据表名称 WHERE查询条件'
  7. //匿名占位符:?
  8. // $sql = 'SELECT * FROM `staffs` WHERE `age` > ?';
  9. //命名占位符:给一个有意义的字符串,必须用冒号开始
  10. $sql = 'SELECT * FROM `staffs` WHERE `age` > :age';
  11. $stmt = $pdo->prepare($sql);
  12. //对应匿名占位符使用的是索引数组
  13. // $stmt->execute([40]);
  14. //对应命名占位符使用的是关联数组
  15. $stmt->execute([':age'=>60]);
  16. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  17. //需要熟记:PDO::FETCH_ASSOC
  18. // print_r($staffs);
  19. foreach ($staffs as $staff) {
  20. $date = date('Y年m月d日',$staff['hiredate']);
  21. printf('id=%s: 姓名=%s ---职位=%s ---入职时间=%s<br>',$staff['id'],$staff['name'],$staff['position'],$date);
  22. }
  23. // 3.关闭连接
  24. unset($pdo);

查询到的结果输出:

二、数据库的修改

代码举例:

  1. namespace pdo_edu;
  2. use PDO;
  3. // 1.连接数据库
  4. require 'connect.php';
  5. // 2.操作数据表
  6. // $sql = "UPDATE 表名 SET 字段=新值 WHERE 更新条件";
  7. // $sql = "UPDATE `staffs` SET `name`= ? WHERE `id`=? ";//修改名字
  8. // $sql = "UPDATE `staffs` SET `age`= ? WHERE `id`=? ";//修改年龄
  9. $sql = "UPDATE `staffs` SET `sex`= ? WHERE `id`=? ";//修改性别
  10. $stmt = $pdo->prepare($sql);
  11. $stmt->execute(['1',9]);
  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);

输出效果:

三、数据库更新
代码举例:

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

输出效果:

三、数据库删除

代码举例:

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

输出效果:

四、总结

1.数据库的id一旦创建之后,只能一条一条往前增加,若是删除了中间的id,则跳过被删除的数字,继续往前增加。
2.对数据库的有用的操作,好像也只有查询、修改、增加、删除了。
3.需要熟记的常用语句需要达到默写级别。
4.注意:对数据库的操作需要先引入数据库。PDO连接数据库三要素,三个重要参数,数据源:DSN;用户名:username;用户密码:password。
5.在做数据库连接时需费些心思,后面对数据库的操作,一个模子下来,修改几个参数即可。
6.整个流程的操作,类似于我们在计算机上对文件夹里面的内容进行增删改查,例如,我们可以对文件夹里面的内容进行查找、复制、重命名、删除。

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:考你个问题,数据表的自增ID, 用完了怎么了?
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学