PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】


Posted in PHP onAugust 11, 2017

本文实例讲述了PHP基于MySQLI函数封装的数据库连接工具类。分享给大家供大家参考,具体如下:

mysql.class.php:

<?php
class mysql
{
  private $mysqli;
  private $result;
  /**
   * 数据库连接
   * @param $config 配置数组
   */
  public function connect($config)
  {
    $host = $config['host'];    //主机地址
    $username = $config['username'];//用户名
    $password = $config['password'];//密码
    $database = $config['database'];//数据库
    $port = $config['port'];    //端口号
    $this->mysqli = new mysqli($host, $username, $password, $database, $port);
  }
  /**
   * 数据查询
   * @param $table 数据表
   * @param null $field 字段
   * @param null $where 条件
   * @return mixed 查询结果数目
   */
  public function select($table, $field = null, $where = null)
  {
    $sql = "SELECT * FROM {$table}";
    if (!empty($field)) {
      $field = '`' . implode('`,`', $field) . '`';
      $sql = str_replace('*', $field, $sql);
    }
    if (!empty($where)) {
      $sql = $sql . ' WHERE ' . $where;
    }
    $this->result = $this->mysqli->query($sql);
    return $this->result->num_rows;
  }
  /**
   * @return mixed 获取全部结果
   */
  public function fetchAll()
  {
    return $this->result->fetch_all(MYSQLI_ASSOC);
  }
  /**
   * 插入数据
   * @param $table 数据表
   * @param $data 数据数组
   * @return mixed 插入ID
   */
  public function insert($table, $data)
  {
    foreach ($data as $key => $value) {
      $data[$key] = $this->mysqli->real_escape_string($value);
    }
    $keys = '`' . implode('`,`', array_keys($data)) . '`';
    $values = '\'' . implode("','", array_values($data)) . '\'';
    $sql = "INSERT INTO {$table}( {$keys} )VALUES( {$values} )";
    $this->mysqli->query($sql);
    return $this->mysqli->insert_id;
  }
  /**
   * 更新数据
   * @param $table 数据表
   * @param $data 数据数组
   * @param $where 过滤条件
   * @return mixed 受影响记录
   */
  public function update($table, $data, $where)
  {
    foreach ($data as $key => $value) {
      $data[$key] = $this->mysqli->real_escape_string($value);
    }
    $sets = array();
    foreach ($data as $key => $value) {
      $kstr = '`' . $key . '`';
      $vstr = '\'' . $value . '\'';
      array_push($sets, $kstr . '=' . $vstr);
    }
    $kav = implode(',', $sets);
    $sql = "UPDATE {$table} SET {$kav} WHERE {$where}";
    $this->mysqli->query($sql);
    return $this->mysqli->affected_rows;
  }
  /**
   * 删除数据
   * @param $table 数据表
   * @param $where 过滤条件
   * @return mixed 受影响记录
   */
  public function delete($table, $where)
  {
    $sql = "DELETE FROM {$table} WHERE {$where}";
    $this->mysqli->query($sql);
    return $this->mysqli->affected_rows;
  }
}

使用方法

<?php
require_once 'mysql.class.php';
/* 配置连接参数 */
$config = array(
  'type' => 'mysql',
  'host' => 'localhost',
  'username' => 'woider',
  'password' => '3243',
  'database' => 'php',
  'port' => '3306'
);
/* 连接数据库 */
$mysql = new mysql();
$mysql->connect($config);
/* 查询数据 */
//1、查询所有数据
$table = 'mysqli';//数据表
$num = $mysql->select($table);
echo '共查询到' . $num . '条数据';
print_r($mysql->fetchAll());
//2、查询部分数据
$field = array('username', 'password'); //过滤字段
$where = 'id % 2 =0';          //过滤条件
$mysql->select($table, $field, $where);
print_r($mysql->fetchAll());
/* 插入数据 */
$table = 'mysqli';//数据表
$data = array(  //数据数组
  'username' => 'admin',
  'password' => sha1('admin')
);
$id = $mysql->insert($table, $data);
echo '插入记录的ID为' . $id;
/* 修改数据 */
$table = 'mysqli';//数据表
$data = array(
  'password' => sha1('nimda')
);
$where = 'id = 44';
$rows = $mysql->update($table, $data, $where);
echo '受影响的记录数量为' . $rows . '条';
/* 删除数据 */
$table = 'mysqli';
$where = 'id = 45';
$rows = $mysql->delete($table, $where);
echo '已删除' . $rows . '条数据';

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
Smarty模板学习笔记之Smarty简介
May 20 PHP
浅谈php扩展imagick
Jun 02 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
yii数据库的查询方法
Dec 28 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
PHP中PCRE正则解析代码详解
Apr 26 PHP
php实现分页功能的详细实例方法
Sep 29 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 #PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 #PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 #PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
Aug 11 #PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 #PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 #PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 #PHP
You might like
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jQuery实现跨域
2015/02/03 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python写xml文件的操作实例
2014/10/05 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
深入了解Python 变量作用域
2020/07/24 Python
css3中transition属性详解
2014/09/02 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
Python函数中的不定长参数相关知识总结
2021/06/24 Python