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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP 数组和字符串互相转换实现方法
Mar 26 PHP
php获取301跳转URL简单实例
Dec 16 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
preg_match_all使用心得分享
Jan 31 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php中删除、清空session的方式总结
Oct 09 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
laravel-admin select框默认选中的方法
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
jQuery+PHP+ajax实现微博加载更多内容列表功能
2014/06/27 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
jquery动态更换设置背景图的方法
2014/03/25 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python字符遍历的艺术
2008/09/06 Python
Python模块学习 datetime介绍
2012/08/27 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
详解Python中的分支和循环结构
2020/02/11 Python
python常用运维脚本实例小结
2020/02/14 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
班会关于环保演讲稿
2013/12/29 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
交流会主持词
2015/07/02 职场文书
小学班主任工作随笔
2015/08/15 职场文书
nginx结合openssl实现https的方法
2021/07/25 Servers
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL