博客列表 >抽象类abstract实现数据库接口iDbBase连接,并增删改查数据-php-25课7.22

抽象类abstract实现数据库接口iDbBase连接,并增删改查数据-php-25课7.22

希望
希望原创
2020年07月23日 20:13:20654浏览

一、抽象类实现接口,iDbBase定义一个数据库的CURD接口


  1. interface iDbBase
  2. {
  3. // 新增
  4. public static function insert($db, $data);
  5. // 查询
  6. public static function select($db, $optoins = []);
  7. // 更新
  8. public static function update($db, $optoins);
  9. // 删除
  10. public static function delete($db, $where);
  11. }

二、实现类改为抽象类 abstract


  1. abstract class aDb implements iDbBase
  2. {
  3. // 使用单例模式连接:创建类的唯一实例,唯一对象
  4. protected static $db = null;
  5. // 实现类中的方法中有公共操作,放在中间的抽象类中实现它
  6. public static function connect($dns, $username, $password)
  7. {
  8. if (is_null(self::$db)) {
  9. // 如果是null 表示未连接
  10. self::$db = new PDO($dns, $username, $password);
  11. }
  12. // 如果连接成功就返回
  13. return self::$db;
  14. }
  15. }

三、创建一个真正实现类,在这个类进行(增删改查)操作,users是数据库中的一张表


  1. class DB extends aDb
  2. {
  3. // 新增一条
  4. public static function insert($db, $data)
  5. {
  6. $stmt = $db->prepare('INSERT `users` SET `name`=?, `email`=? , `password`=?;');
  7. $stmt->execute(['Micki', '111@php.cn', sha1('micki123')]);
  8. return "受影响的记录有" . $stmt->rowCount() . "条";
  9. }
  10. // 更新id为8的数据
  11. public static function update($db, $optoins)
  12. {
  13. $stmt = $db->prepare('UPDATE `users` SET `name`=?, `email`= ?, `password`=? WHERE `id` = ?;');
  14. $stmt->execute(['Melinda', '222@php.cn', sha1('melinda123'), 8]);
  15. return "受影响的记录有" . $stmt->rowCount() . "条";
  16. }
  17. // 删除id是6的数据
  18. public static function delete($db, $where)
  19. {
  20. $stmt = $db->prepare('DELETE FROM `users` WHERE `id` = ?;');
  21. $stmt->execute([6]);
  22. return "受影响的记录有" . $stmt->rowCount() . "条";
  23. }
  24. // 查询所有数据
  25. public static function select($db, $optoins = [])
  26. {
  27. return $db->query('SELECT * FROM `users`')->fetchALL(PDO::FETCH_ASSOC);
  28. }
  29. }

原数据库与操作后的相比,实现了增删改查数据,如下图:

四、连接参数,把config.php这个文档的数据库的参数拿来、配置、调用


  1. $config = [
  2. // 类型
  3. 'type' => $type ?? 'mysql',
  4. // 默认数据库主机名(IP)
  5. 'host' => $host ?? 'localhost',
  6. // 默认数据库名
  7. 'dbname' => $type ?? 'phpedu',
  8. // 默认字符编码集
  9. 'charset' => $type ?? 'utf8',
  10. // 默认端口号
  11. 'port' => $type ?? '3306',
  12. // 默认用户名
  13. 'username' => $username ?? 'root',
  14. // 默认用户的密码
  15. 'password' => $password ?? 'melinda123'
  16. ];
  17. // 做配置
  18. $dsn = sprintf('%s:host=%s;dbname=%s;', $config['type'], $config['host'], $config['dbname']);
  19. $username = $config['username'];
  20. $password = $config['password'];
  21. // 调用
  22. $db = DB::connect($dsn, $username, $password);

五、打印输出


  1. // 1.新增
  2. // echo DB::insert($db, $data);
  3. // 2.修改
  4. // echo DB::update($db, $optoins);
  5. // 3.删除
  6. // echo DB::delete($db, $where);
  7. // 4.查询
  8. // 调用实现类DB中 select()查询,由于是二维数组,要遍历
  9. foreach (DB::select($db) as $user) {
  10. print_r($user);
  11. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议