欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-24 11:43:03
...

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));

上一篇:

下一篇: