//私有的构造方法用来阻止在类的外部实例化private function __construct($param){$this->initData($param);$this->connectDB();
}//私有的__clone阻止在类的外部clone对象
private function__clone(){
}//获取单例,公有的静态方法用来获取对象的单例
static function getInstance($param){if(!self::$instanceinstanceof self){
self::$instance = new self($param);
}return self::$instance;
}//初始化参数
private function initData($param = array()){$this->host = $param['host']??'127.0.0.1';$this->port = $param['port']??'3306';$this->user = $param['user']??'';$this->pwd = $param['pwd']??'';$this->dbname = $param['dbname']??'';$this->charset = $param['charset']??'utf8';
}//连接数据库
private functionconnectDB(){$this->link =@mysqli_connect($this->host,$this->user,$this->pwd,$this->dbname);if(!$this->link){echo '连接数据库失败';echo '错误:'.mysqli_connect_error,'
';echo '错误码:'.mysqli_connect_errno,'
';exit;
}
mysqli_set_charset($this->link,$this->charset);
}//执行数据库的增、删、改、查语句
private function executeSQL($sql){$rs = mysqli_query($this->link,$sql);if(!$rs){echo '执行sql语句失败';echo '错误:'.mysqli_error($this->link);echo '错误码:'.mysqli_errno($this->link);exit;
}return $rs;
}//执行增、删、改 并返回执行结果(true 或 false)
function executeZSG($sql){if(in_array(substr($sql,0,6),array('delete','update','insert'))){return $this->executeSQL($sql);
}else{echo '非法访问
';exit;
}
}//获取自动增长的编号
functiongetIncrement(){return mysqli_insert_id($this->link);
}//执行查询语句
private function query($sql){if(substr($sql,0,4) == 'desc' || substr($sql,0,4) == 'show' || substr($sql,0,6) == 'select'){return $this->executeSQL($sql);
}else{echo '非法访问
';exit;
}
}//执行查询语句,返回二维数组
function fetchAll($sql,$type='assoc'){$rs = $this->query($sql);$type = $this->getType($type);return mysqli_fetch_all($rs,$type);
}//匹配一维数组
function fetchRow($sql,$type='assoc'){$list = $this->fetchAll($sql,$type);if(!empty($list)){return $list[0];
}return array();
}//匹配一行一列
function fetchColumn($sql){$list = $this->fetchAll($sql,'num');if(!empty($list)){return $list[0];
}return null;
}//获取匹配类型
private function getType($type){switch($type){case 'num':
returnMYSQLI_NUM;case 'both':
returnMYSQLI_BOTH;default:
returnMYSQLI_ASSOC;
}
}
}$param = array('user' => 'root',
'pwd' => 'root',
'dbname' => 'mycool');//获取单例
$db=MySQLDB::getInstance($param);//var_dump($db);
//更新
// $db->executeZSG("update b set age=122 where id=11");
//插入
// if($db->executeZSG("insert into b values (null,55,66,22)"))
// echo '编号是:'.$db->getIncrement();
// 删除
// if($db->executeZSG("delete from b where id=11"))
// echo '删除成功';
//查询
// $list=$db->fetchAll('select * from b','assoc');
// var_dump($list);
// $list=$db->fetchRow('select * from b where id=9','num');
// var_dump($list);
// $list=$db->fetchColumn('select count(*) from b','assoc');
// var_dump($list);