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的FTP学习(一)[转自奥索]
Oct 09 PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
PHP的拦截器实例分析
Nov 03 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
PHP微商城开源代码实例
Mar 27 PHP
tp5修改(实现即点即改)
Oct 18 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
新52大事件
2020/03/03 欧美动漫
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
浅析js预加载/延迟加载
2014/09/25 Javascript
javascript 闭包详解
2015/02/15 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
js面向对象的写法
2016/02/19 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
python判断无向图环是否存在的示例
2019/11/22 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
英国健身专家:WIT Fitness
2021/02/09 全球购物
Linux的主要特性
2014/10/06 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
竞争上岗演讲稿
2014/01/05 职场文书
高中军训第一天感言
2014/03/06 职场文书
借款协议书范本
2014/04/22 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Golang生成Excel文档的方法步骤
2021/06/09 Golang
JavaScript实现简单计时器
2021/06/22 Javascript
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server