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连mysql和oracle数据库性能比较
Oct 09 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
laravel-admin 中列表筛选方法
Oct 03 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+oracle 分页类
2006/10/09 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python Collatz序列实现过程解析
2019/10/12 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
农业资源与环境专业自荐信范文
2013/12/30 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
应届生简历自我评价
2015/03/11 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP