博客列表 >PHP之面向对象以及PDO连接数据库

PHP之面向对象以及PDO连接数据库

xiablog
xiablog原创
2022年02月21日 19:53:19828浏览

PHP之面向对象以及PDO连接数据库

PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。

PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。

单例模式,说白了就是说一个类只能实例化一次。

目的就是为了防止产生多个实例化对象
第一次产生后放到类的一个静态变量中,下次再实例化就直接返回这个静态变量

  1. <?php
  2. //定义接口
  3. interface cdbBase
  4. {
  5. // 数据表增删查改
  6. static function insert($db, $data);
  7. static function select($db, $where = []);
  8. static function update($db, $where = []);
  9. static function delete($db, $data, $where = []);
  10. //数据库连接
  11. static function doconnect($dsn, $user, $password);
  12. }
  13. // 单例模式连接数据库
  14. abstract class adb implements cdbBase
  15. {
  16. //定义静态属性存储pdo唯一实例
  17. private static $_instance;
  18. //阻止外部实例化
  19. private function __construct()
  20. {
  21. }
  22. private function __clone()
  23. {
  24. }
  25. // 创建adb类的唯一实例 获取唯一的pdo对象
  26. static function doconnect($dsn, $user, $password)
  27. {
  28. if (is_null(self::$_instance)) {
  29. self::$_instance = new pdo($dsn, $user, $password);
  30. }
  31. echo "连接成功<hr>";
  32. return self::$_instance;
  33. }
  34. }
  35. //工作类,具体实现
  36. class DB extends adb
  37. {
  38. // 数据库连接curd
  39. static function insert($db, $data = [])
  40. {
  41. $sql = "INSERT INTO `test` VALUES ('13','123456')";
  42. $doinsert = $db->exec($sql);
  43. if($doinsert){
  44. echo "添加成功<br>";
  45. }else{
  46. echo "添加失败<br>";
  47. }
  48. return $doinsert;
  49. }
  50. static function select($db, $where = [])
  51. {
  52. $doselect = $db->query('SELECT * FROM `test` LIMIT 7;')->fetchAll(PDO::FETCH_ASSOC);
  53. if($doselect){
  54. echo "选择数据成功:<br>";
  55. }else{
  56. echo "选择数据失败:<br>";
  57. }
  58. return $doselect;
  59. }
  60. static function update($db, $where = [])
  61. {
  62. $doupdate = $db->exec("UPDATE `test` SET `name` = '大萨dsa达撒' WHERE `test`.`id` = 1");
  63. if($doupdate){
  64. echo "更新成功<br>";
  65. }else{
  66. echo "更新失败<br>";
  67. }
  68. return $doupdate;
  69. }
  70. static function delete($db, $data = [], $where = [])
  71. {
  72. $doupdate = $db->exec("DELETE FROM `test` WHERE `test`.`id` = 1");
  73. if($doupdate){
  74. echo "删除成功<br>";
  75. }else{
  76. echo "删除失败<br>";
  77. }
  78. return $doupdate;
  79. }
  80. }
  81. //客户端代码,参数
  82. $config = [
  83. 'type' => $type ?? 'mysql',
  84. 'host' => $host ?? 'localhost',
  85. 'dbname' => $dbname ?? 'userinfo',
  86. 'username' => $username ?? 'root',
  87. 'password' => $password ?? '',
  88. 'port' => $port ?? '3306',
  89. 'charset' => $charset ?? 'utf8'
  90. ];
  91. extract($config);
  92. $dsn = sprintf('%s:host=%s;port=%s;charset=%s;dbname=%s', $type, $host, $port, $charset, $dbname);
  93. $pdo = DB::doconnect($dsn, $username, $password);
  94. var_dump(DB::select($pdo));
  95. echo "<hr>";
  96. var_dump(DB::insert($pdo));
  97. echo "<hr>";
  98. var_dump(DB::delete($pdo));
  99. echo "<hr>";
  100. var_dump(DB::update($pdo));
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议