27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
1、单例模式
2、初始化参数
3、连接数据库
4、执行增删改
5、执行查询
a)返回二维数组
b)返回一维数组
c)返回一行一列
第一部分:单例、初始化参数、实例化PDO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?php class MyPDO{ private $type ; //数据库类别 private $host ; //主机地址 private $port ; //端口号 private $dbname ; //数据库名 private $charset ; //字符集 private $user ; //用户名 private $pwd ; //密码 private $pdo ; //保存PDO对象 private static $instance ; private function __construct( $param ) { $this ->initParam( $param ); $this ->initPDO(); } private function __clone() { } public static function getInstance( $param = array ()){ if (!self:: $instance instanceof self) self:: $instance = new self( $param ); return self:: $instance ; } //初始化参数 private function initParam( $param ){ $this ->type= $param [ 'type' ]?? 'mysql' ; $this ->host= $param [ 'host' ]?? '127.0.0.1' ; $this ->port= $param [ 'port' ]?? '3306' ; $this ->dbname= $param [ 'dbname' ]?? 'data' ; $this ->charset= $param [ 'charset' ]?? 'utf8' ; $this ->user= $param [ 'user' ]?? 'root' ; $this ->pwd= $param [ 'pwd' ]?? 'root' ; } //初始化PDO private function initPDO(){ try { $dsn = "{$this->type}:host={$this->host};port={$this->port};dbname={$this->dbname};charset={$this->charset}" ; $this ->pdo= new PDO( $dsn , $this ->user, $this ->pwd); } catch (PDOException $ex ) { echo '错误编号:' . $ex ->getCode(), '<br>' ; echo '错误行号:' . $ex ->getLine(), '<br>' ; echo '错误文件:' . $ex ->getFile(), '<br>' ; echo '错误信息:' . $ex ->getMessage(), '<br>' ; exit ; } } } //测试 $param = array ( ); $mypdo = MyPDO::getInstance( $param ); var_dump( $mypdo ); |
第二部分:数据操作部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <?php class MyPDO{ private $type ; //数据库类别 private $host ; //主机地址 private $port ; //端口号 private $dbname ; //数据库名 private $charset ; //字符集 private $user ; //用户名 private $pwd ; //密码 private $pdo ; //保存PDO对象 private static $instance ; private function __construct( $param ) { $this ->initParam( $param ); $this ->initPDO(); $this ->initException(); } private function __clone() { } public static function getInstance( $param = array ()){ if (!self:: $instance instanceof self) self:: $instance = new self( $param ); return self:: $instance ; } //初始化参数 private function initParam( $param ){ $this ->type= $param [ 'type' ]?? 'mysql' ; $this ->host= $param [ 'host' ]?? '127.0.0.1' ; $this ->port= $param [ 'port' ]?? '3306' ; $this ->dbname= $param [ 'dbname' ]?? 'data' ; $this ->charset= $param [ 'charset' ]?? 'utf8' ; $this ->user= $param [ 'user' ]?? 'root' ; $this ->pwd= $param [ 'pwd' ]?? 'root' ; } //初始化PDO private function initPDO(){ try { $dsn = "{$this->type}:host={$this->host};port={$this->port};dbname={$this->dbname};charset={$this->charset}" ; $this ->pdo= new PDO( $dsn , $this ->user, $this ->pwd); } catch (PDOException $ex ) { $this ->showException( $ex ); exit ; } } //显示异常 private function showException( $ex , $sql = '' ){ if ( $sql != '' ){ echo 'SQL语句执行失败<br>' ; echo '错误的SQL语句是:' . $sql , '<br>' ; } echo '错误编号:' . $ex ->getCode(), '<br>' ; echo '错误行号:' . $ex ->getLine(), '<br>' ; echo '错误文件:' . $ex ->getFile(), '<br>' ; echo '错误信息:' . $ex ->getMessage(), '<br>' ; } //设置异常模式 private function initException(){ $this ->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } //执行增、删、改操作 public function exec ( $sql ){ try { return $this ->pdo-> exec ( $sql ); } catch (PDOException $ex ) { $this ->showException( $ex , $sql ); exit ; } } //获取自动增长的编号 public function lastInsertId(){ return $this ->pdo->lastInsertId(); } } //测试 $param = array ( ); $mypdo = MyPDO::getInstance( $param ); //echo $mypdo->exec('delete from news where id=6'); if ( $mypdo -> exec ( "insert into news values (null,'11','1111',unix_timestamp())" )) echo '自动增长的编号是:' . $mypdo ->lastInsertId (); |
第三部分:数据查询部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <?php class MyPDO{ ... //判断匹配的类型 private function fetchType( $type ){ switch ( $type ){ case 'num' : return PDO::FETCH_NUM; case 'both' : return PDO::FETCH_BOTH; case 'obj' : return PDO::FETCH_OBJ; default : return PDO::FETCH_ASSOC; } } //获取所有数据 ,返回二维数组 public function fetchAll( $sql , $type = 'assoc' ){ try { $stmt = $this ->pdo->query( $sql ); //获取PDOStatement对象 $type = $this ->fetchType( $type ); //获取匹配方法 return $stmt ->fetchAll( $type ); } catch (Exception $ex ) { $this ->showException( $ex , $sql ); } } //获取一维数组 public function fetchRow( $sql , $type = 'assoc' ){ try { $stmt = $this ->pdo->query( $sql ); //获取PDOStatement对象 $type = $this ->fetchType( $type ); //获取匹配方法 return $stmt ->fetch( $type ); } catch (Exception $ex ) { $this ->showException( $ex , $sql ); exit ; } } //返回一行一列 public function fetchColumn( $sql ){ try { $stmt = $this ->pdo->query( $sql ); return $stmt ->fetchColumn(); } catch (Exception $ex ) { $this ->showException( $ex , $sql ); exit ; } } } //测试 $param = array ( ); $mypdo = MyPDO::getInstance( $param ); //echo $mypdo->exec('delete from news where id=6'); /* if($mypdo->exec("insert into news values (null,'11','1111',unix_timestamp())")) echo '自动增长的编号是:'.$mypdo->lastInsertId (); */ //$list=$mypdo->fetchAll('select * from news'); //$list=$mypdo->fetchRow('select * from news where id=1'); $list = $mypdo ->fetchColumn( 'select count(*) from news' ); echo '<pre>' ; var_dump( $list ); |
本站内容均为小米原创,转载请注明出处:小米技术社区>> 单例模式封装MyPDO类