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 相关文章推荐
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
php懒人函数 自动添加数据
Jun 28 PHP
php中长文章分页显示实现代码
Sep 29 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
Yii框架表单模型和验证用法
May 20 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
Nov 17 PHP
thinkPHP5.0框架开发规范简介
Mar 25 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php根据命令行参数生成配置文件详解
Mar 15 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 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的库,结果发现很多东西
2006/12/31 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
Python实现基于HTTP文件传输实例
2014/11/08 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
Python中常用的内置方法
2019/01/28 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
软件测试企业面试试卷
2016/07/13 面试题
离婚协议书怎样才有法律效力
2014/10/10 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
迟到检讨书范文
2015/01/27 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
mysql函数全面总结
2021/11/11 MySQL
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python