# 封装MySQL的单例/*
* 步骤:
* 1.实现单例
* 2.初始化参数
* 3.连接数据库
* 4.操作数据
*/classMySQLConnection{privatestatic$instance;private$host;//主机地址private$port;//端口号private$user;//用户名private$pwd;//密码private$dbname;//数据库名private$charset;//字符集private$link;//连接对象privatefunction__construct($parma){$this->initParma($parma);$this->initconnection();}privatefunction__clone(){}publicstaticfunctiongetInstance($parma=array()){if(!self::$instanceinstanceofself){self::$instance=newself($parma);}returnself::$instance;}//初始化参数privatefunctioninitParma($parma){$this->host=$parma['host']??'127.0.0.1';$this->port=$parma['port']??'3306';$this->user=$parma['user']??'';$this->pwd=$parma['pwd']??'';$this->dbname=$parma['dbname']??'';$this->charset=$parma['charset']??'utf8';}privatefunctioninitconnection(){$this->link=mysqli_connect($this->host,$this->user,$this->pwd,$this->dbname,$this->port);if(mysqli_connect_error()){echo'数据库连接失败<br>';echo'错误信息:'.mysqli_connect_error().'<br>';echo'错误编码:'.mysqli_connect_errno().'<br>';exit();}mysqli_set_charset($this->link,$this->charset);}//执行数据库的增删改查privatefunctionexcute($sql){if(!$rs=mysqli_query($this->link,$sql)){echo'SQL语句执行失败'.'<br>';echo'错误信息:'.mysqli_error($this->link).'<br>';echo'错误编号:'.mysqli_errno($this->link).'<br>';echo'错误SQL语句:'.$sql.'<br>';}return$rs;}//执行增删改/*
* 执行成功返回true,失败返回false
*/publicfunctionexec($sql){$key=substr($sql,0,6);if(in_array($key,array('insert','update','delete')))return$this->excute($sql);else{echo'非法访问<br>';exit();}}//获取自动增长的编号publicfunctiongetLastInsertId(){returnmysqli_insert_id($this->link);}//执行查询语句privatefunctionquery($sql){if(substr($sql,0,6)=='select'||substr($sql,0,4)=='show'||substr($sql,0,4)=='desc'){return$this->excute($sql);}else{return'非法访问<br>';}}privatefunctiongetType($type){switch($type){case'num':returnMYSQLI_NUM;case'both':returnMYSQLI_BOTH;default:returnMYSQLI_ASSOC;}}//执行查询语句,返回二维数组publicfunctionfetchAll($sql,$type='assoc'){//可以这样写return mysqli_fetch_all($this->query($sql),$this->getType($type));$rs=$this->query($sql);$type=$this->getType($type);returnmysqli_fetch_all($rs,$type);}//执行匹配语句返回一维数组publicfunctionfetchRow($sql,$type='assoc'){$list=$this->fetchAll($sql,$type);if(!empty($list)){return$list[0];//返回的是一行数据}returnarray();}//匹配一行一列publicfunctionfetchColumns($sql){$list=$this->fetchAll($sql,'num');if(!empty($list)){return$list[0][0];//返回的是一行一列数据的结果}returnnull;}}$parma=array('host'=>'127.0.0.1','user'=>'你的数据库用户名','pwd'=>'你的数据库密码','port'=>'数据库所开的端口号','dbname'=>'数据库名');$db=MySQLConnection::getinstance($parma);$er=$db->fetchAll('select * from user');$row=$db->fetchRow('select * from user where id=2');$column=$db->fetchColumns('select name from user where id=2');echo'<br>';echo$column;echo'<pre>';print_r($row);echo'<pre>';print_r($er);