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初学者们头痛的十四个问题
Jan 15 PHP
PHP n个不重复的随机数生成代码
Jun 23 PHP
PHP学习 变量使用总结
Mar 24 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
php判断访问IP的方法
Jun 19 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
PHP让网站移动访问更加友好方法
Feb 14 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
php 原生分页
Apr 01 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
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
django解决订单并发问题【推荐】
2019/07/31 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
使用Python实现分别输出每个数组
2019/12/06 Python
戴尔英国官网:Dell英国
2017/05/27 全球购物
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
学生出入校管理制度
2014/01/16 职场文书
公司总经理任命书
2014/06/05 职场文书
学党史心得体会
2014/09/05 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
初中差生评语
2014/12/29 职场文书
慰问信格式
2015/02/14 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
护理工作心得体会
2016/01/22 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技