深圳市金黑网络技术有限公司始终坚持以用户需求为导向,提供安全、稳定、高效的产品和服务!
签到 · 搜索导航 · 服务热线 · 微信/手机:17817817816

深圳网站建设

查看: 300|回复: 0

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

[复制链接]

UID
1
贡献
844
金币
1540
主题
520
在线时间
333 小时
注册时间
2022-1-15
最后登录
2024-11-12
QQ
发表于 2022-12-9 13:28:27 | 300 | 0 | 显示全部楼层 |阅读模式
php封装MySQL的数据操作的功能查询结果

代码如下:
  1. <?php
  2. //封装MySQL单例
  3. class MySQLDB {
  4.         private $host;                //主机地址
  5.         private $port;                //端口号
  6.         private $user;                //用户名
  7.         private $pwd;                //密码
  8.         private $dbname;        //数据接名
  9.         private $charset;        //字符集
  10.         private $link;                //连接对象
  11.         private static $instance;
  12.         private function __construct($param) {
  13.                 $this->initParam($param);
  14.                 $this->initConnect();
  15.         }
  16.         private function __clone() {
  17.                
  18.         }
  19.         //获取单例
  20.         public static function getInstance($param=array()) {
  21.                 if(!self::$instance instanceof self)
  22.                         self::$instance=new self($param);
  23.                 return self::$instance;
  24.         }
  25.         //初始化参数
  26.         private function initParam($param) {
  27.                 $this->host=$param['host']??'127.0.0.1';
  28.                 $this->port=$param['port']??'3306';
  29.                 $this->user=$param['user']??'';
  30.                 $this->pwd=$param['pwd']??'';
  31.                 $this->dbname=$param['dbname']??'';
  32.                 $this->charset=$param['charset']??'utf8';
  33.         }
  34.         //连接数据库
  35.         private function initConnect() {
  36.                 $this->link=@mysqli_connect($this->host,$this->user,$this->pwd,$this->dbname);
  37.                 if(mysqli_connect_error()){
  38.                         echo '数据库连接失败<br>';
  39.                         echo '错误信息:'.mysqli_connect_error(),'<br>';
  40.                         echo '错误码:'.mysqli_connect_errno(),'<br>';
  41.                         exit;
  42.                 }
  43.                 mysqli_set_charset($this->link,$this->charset);
  44.         }
  45.         //执行数据库的增、删、改、查
  46.         private function execute($sql) {
  47.                 if(!$rs=mysqli_query($this->link,$sql)){
  48.                         echo 'SQL语句执行失败<br>';
  49.                         echo '错误信息:'.mysqli_error($this->link),'<br>';
  50.                         echo '错误码:'.mysqli_errno($this->link),'<br>';
  51.                         echo '错误的SQL语句:'.$sql,'<br>';
  52.                         exit;
  53.                 }
  54.                 return $rs;
  55.         }
  56.         /**
  57.         *执行增、删、改
  58.         *@return bool 成功返回true,失败返回false
  59.         */
  60.         public function exec($sql) {
  61.                 $key=substr($sql,0,6);
  62.                 if(in_array($key,array('insert','update','delete')))
  63.                         return $this->execute($sql);
  64.                 else{
  65.                         echo '非法访问<br>';
  66.                         exit;
  67.                 }

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

  73.         //执行查询语句
  74.         private function query($sql) {
  75.                 if(substr($sql,0,6)=='select' || substr($sql,0,4)=='show' || substr($sql,0,4)=='desc'){
  76.                         return $this->execute($sql);
  77.                 }else{
  78.                         echo '非法访问<br>';
  79.                         exit;
  80.                 }
  81.         }
  82.         /**
  83.         *执行查询语句,返回二维数组
  84.         *@$sql string 查询sql语句
  85.         *@type string assoc|num|both
  86.         */
  87.         public function fetchAll($sql,$type='assoc') {
  88.                 $rs=$this->query($sql);
  89.                 $type=$this->getType($type);
  90.                 return mysqli_fetch_all($rs,$type);
  91.         }
  92.         //匹配一维数组
  93.         public function fetchRow($sql,$type='assoc') {
  94.                 $list=$this->fetchAll($sql,$type);
  95.                 if(!empty($list))
  96.                         return $list[0];
  97.                 return array();
  98.         }
  99.         //匹配一行一列
  100.         public function fetchColumn($sql) {
  101.                 $list=$this->fetchRow($sql,'num');
  102.                 if(!empty($list))
  103.                         return $list[0];
  104.                 return null;
  105.         }

  106.         //获取匹配类型
  107.         private function getType($type) {
  108.                 switch($type){
  109.                         case 'num':
  110.                                 return  MYSQLI_NUM;
  111.                         case 'both':
  112.                                 return  MYSQLI_BOTH;
  113.                         default:
  114.                                 return  MYSQLI_ASSOC;
  115.                 }
  116.         }
  117. }

  118. //测试
  119. //配置参数
  120. $param=array(
  121.         'user'                =>        'root',
  122.         'pwd'                =>        'root',
  123.         'dbname'        =>        'data'
  124. );
  125. //获取单例
  126. $db=MySQLDB::getInstance($param);
  127. //更新
  128. //$db->exec("update news set title='青草' where id=2");
  129. //插入
  130. /*
  131. if($db->exec("insert into news values (null,'aa','bb',unix_timestamp())"))
  132.         echo '编号是:'.$db->getLastInsertId();
  133. */

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

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

  138. echo '<pre>';
  139. var_dump($list);
复制代码


楼主热帖

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

快速回复 返回顶部 返回列表