Blogger Information
Blog 43
fans 1
comment 0
visits 33483
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP数据库的增删改查
蔚蓝世纪
Original
653 people have browsed it

我们对数据库内容的操作,按操作方式可以分为增删改查(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.整个流程的操作,类似于我们在计算机上对文件夹里面的内容进行增删改查,例如,我们可以对文件夹里面的内容进行查找、复制、重命名、删除。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:考你个问题,数据表的自增ID, 用完了怎么了?
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!