博主信息
博文 20
粉丝 1
评论 0
访问量 21220
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP之面向对象以及PDO连接数据库
xiablog
原创
1472人浏览过

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));
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学