admin 发表于 2022-12-9 13:28:27

php封装MySQL的数据操作的功能查询结果

php封装MySQL的数据操作的功能查询结果

代码如下:
<?php
//封装MySQL单例
class MySQLDB {
        private $host;                //主机地址
        private $port;                //端口号
        private $user;                //用户名
        private $pwd;                //密码
        private $dbname;        //数据接名
        private $charset;        //字符集
        private $link;                //连接对象
        private static $instance;
        private function __construct($param) {
                $this->initParam($param);
                $this->initConnect();
        }
        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->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 function initConnect() {
                $this->link=@mysqli_connect($this->host,$this->user,$this->pwd,$this->dbname);
                if(mysqli_connect_error()){
                        echo '数据库连接失败<br>';
                        echo '错误信息:'.mysqli_connect_error(),'<br>';
                        echo '错误码:'.mysqli_connect_errno(),'<br>';
                        exit;
                }
                mysqli_set_charset($this->link,$this->charset);
        }
        //执行数据库的增、删、改、查
        private function execute($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>';
                        exit;
                }
                return $rs;
        }
        /**
        *执行增、删、改
        *@return bool 成功返回true,失败返回false
        */
        public function exec($sql) {
                $key=substr($sql,0,6);
                if(in_array($key,array('insert','update','delete')))
                        return $this->execute($sql);
                else{
                        echo '非法访问<br>';
                        exit;
                }

        }
        //获取自动增长的编号
        public function getLastInsertId() {
                return mysqli_insert_id($this->link);
        }

        //执行查询语句
        private function query($sql) {
                if(substr($sql,0,6)=='select' || substr($sql,0,4)=='show' || substr($sql,0,4)=='desc'){
                        return $this->execute($sql);
                }else{
                        echo '非法访问<br>';
                        exit;
                }
        }
        /**
        *执行查询语句,返回二维数组
        *@$sql string 查询sql语句
        *@type string assoc|num|both
        */
        public function fetchAll($sql,$type='assoc') {
                $rs=$this->query($sql);
                $type=$this->getType($type);
                return mysqli_fetch_all($rs,$type);
        }
        //匹配一维数组
        public function fetchRow($sql,$type='assoc') {
                $list=$this->fetchAll($sql,$type);
                if(!empty($list))
                        return $list;
                return array();
        }
        //匹配一行一列
        public function fetchColumn($sql) {
                $list=$this->fetchRow($sql,'num');
                if(!empty($list))
                        return $list;
                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'        =>        'data'
);
//获取单例
$db=MySQLDB::getInstance($param);
//更新
//$db->exec("update news set title='青草' where id=2");
//插入
/*
if($db->exec("insert into news values (null,'aa','bb',unix_timestamp())"))
        echo '编号是:'.$db->getLastInsertId();
*/

//查询
//$list=$db->fetchAll('select * from news','aa');
//$list=$db->fetchRow('select * from news where id=1','aa');

$list=$db->fetchColumn('select count(*) from news');

echo '<pre>';
var_dump($list);

页: [1]
查看完整版本: php封装MySQL的数据操作的功能查询结果