MySQL 封装DB类

JDBC 封装MySQL数据库连接类 方式一:创建一个DBHelper类,封装代码,但这种方式导致程序代码的耦合度比较高! package com.andy.shopping.util.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * 连接数据库类 * @author andy ... 阅读详情

MySQL 封装DB类

闲来无事,封装了一个轻量的,不用手动写SQL的类,不算太强大,满足简单的SQL语句

其他的不说,上代码:

//MySQL配置文件:

<?php

// 第一个为默认链接数据库配置
function choose_config($db_name = 'default'){
    switch ($db_name){
        case 'default':
            return ([
                'host'=>'localhost',
                'user'=>'root',
                'pass'=>'root',
                'database'=>'test',
                'ut'=>'utf8'
            ]);
            break;
        case 'admin':
            return ([
                'host'=>'地址',
                'user'=>'名称',
                'pass'=>'密码',
                'database'=>'库名',
                'ut'=>'utf8'
            ]);
            break;
    }
}
//DB类

<?php
include_once "mysql.php";	// 引入配置文件
date_default_timezone_set('PRC');


class db
{
    private $host = '' ;
    private $user = '' ;
    private $pass = '' ;
    private $database = '' ;
    private $ut = '' ;
    private $conn = null;
    private $sql = '';
    private $result = '';       /* 执行SQL语句,PDO返回结果集 */
    private $error = '';

    /* 构造函数,选择配置里面的数据库 */
    public function __construct($db_name)
    {
        $configu = choose_config($db_name);	// 选择数据库配置
        $this->host = $configu['host'];
        $this->user = $configu['user'];
        $this->pass = $configu['pass'];
        $this->database = $configu['database'];
        $this->ut = $configu['ut'];
    }
    /* 析构函数,关闭连接数据库 */
    public function __destruct()
    {
        $this->conn = null;
    }
    /* 连接数据库 */
    public function connect() {
        try {
            $this->conn = @new PDO("mysql:host=$this->host;dbname=$this->database", "$this->user", "$this->pass");
            $this->conn -> query("SET NAMES $this->ut");
        } catch (PDOException $e) {
            $this -> error_log($e -> getMessage());
        }

    }





    /* 用原生态SQL语句操作数据库 */
    public function sql_query($sql) {
        $this->sql = $sql;
        /* 打开连接 */
        if(!$this -> conn){
            /* 未打开连接,打开链接 */
            $this->connect();
        }
        $result = $this -> conn -> query($this->sql)or die($this->error_log2($this->conn->errorInfo(),$this->sql));
        $this->result = $result;
    }


    /* 操作数据库 */
    public function query() {
        /* 打开连接 */
        if(!$this -> conn){
            /* 未打开连接,打开链接 */
            $this->connect();
        }
        /* update安全判断,当SQL语句为跟新语句时,未带条件不执行语句 */
        if(strpos($this->sql,'update') !== false){
            if(strpos($this->sql,'where') !== false){
                $result = $this -> conn -> query($this->sql)or die($this->error_log2($this->conn->errorInfo(),$this->sql));
                $this->result = $result;
            }else{
                $this->error = '警告:更新语句,未加where条件!';
            }
        }else{
            $result = $this -> conn -> query($this->sql)or die($this->error_log2($this->conn->errorInfo(),$this->sql));
            $this->result = $result;
        }
    }




    /**
     * 查询一条数据语句 用的 | limit 1
     * @param string $table_name   表的名称
     * @param array $field_arr    字段数组 | ['id','name']
     */
    public function sel_row($table_name,$field_arr){
        $sql = 'select ';
        $sql1 = '';
        foreach ($field_arr as $value){
            $sql1 .= $value.',';
        }
        $sql1 = rtrim($sql1, ',');  // 去除最后一个逗号
        $sql = $sql.$sql1.' from `'.$table_name.'` limit 1';
        $this->sql = $sql;
    }

    /**
     * 查询语句
     * @param string $table_name   表的名称
     * @param string/array $field_arr    字段数组 | ['id','name']
     */
    public function sel($table_name,$field_arr){
        $sql = 'select ';
        if(is_array($field_arr)) {
            $sql1 = '';
            foreach ($field_arr as $value){
                $sql1 .= $value.',';
            }
            $sql1 = rtrim($sql1, ',');  // 去除最后一个逗号
            $sql = $sql.$sql1.' from `'.$table_name.'`';
        }else{
            $sql .= $field_arr.' from `'.$table_name.'`';
        }
        $this->sql = $sql;
    }

    /**
     * 添加where语句
     * @param string/array $para  |  string:'a=b and c<d' | array: [['a','=','b'],['c','<','e']]
     */
    public function add_where($para){
        $sql = $this->sql;
        if(is_array($para)) {
            $sql1 = '';
            foreach ($para as $value){
                $sql1 .= $value[0] . $value[1] . $value[2].' and ';
            }
            $sql1 = rtrim($sql1, ' and ');  // 去除最后一个'and'
            $sql .=' where '.$sql1;
        }else{
            $sql .= ' where '.$para;
        }
        $this->sql = $sql;
    }

    /**
     * 添加分页查询数据语句
     * @param string $by_field  按照哪个字段分页
     * @param int $page         页数
     * @param int $num          一页多少条数据
     * @param bool $DESC        是否开启降序排序,默认不开启,默认为升序
     */
    public function add_page($by_field,$page,$num,$DESC = false){
        $num1 = $num*($page-1);
        $sql = $this->sql;
        if($DESC){
            $sql .= ' ORDER BY '.$by_field.' DESC limit '.$num1.','.$num;
        }else{
            $sql .= ' ORDER BY '.$by_field.' limit '.$num1.','.$num;
        }
        $this->sql = $sql;
    }

    /**
     * 插入一条数据语句
     * @param string $table_name    表名称
     * @param array $field_arr      字段的名称数组 | ['id','name']
     * @param array $value_arr      插入值的数组   | ['1','xcc']
     */
    public function insert_row($table_name,$field_arr,$value_arr){
        $sql = 'insert into `'.$table_name.'` (';
        $key = '';
        foreach ($field_arr as $value){
            $key .= '`'.$value.'`,';
        }
        $key = rtrim($key, ',');  // 去除最后一个逗号

        $val = '';
        foreach ($value_arr as $value){
            $val .= '\''.$value.'\',';
        }
        $val = rtrim($val, ',');  // 去除最后一个逗号

        $sql .= $key.') values ('.$val.')';
        $this->sql = $sql;
    }

    /**
     * 更新一条语句
     * @param string $table_name        表名称
     * @param string/array $field_a     字段数组或字符串 | ['id','name']  |    'id'
     * @param string/array $value_a     值数组或字符串   | ['1','xcc']    |    '1'
     */
    public function update_row($table_name,$field_a,$value_a){
        $sql = 'update `'.$table_name.'` set ';
        if(is_array($field_a)){
            $sql1 = '';
            for ($i=0;$i<count($field_a,0);$i++){
                $sql1 .= $field_a[$i].'=\''.$value_a[$i].'\',';
            }
            $sql1 = rtrim($sql1, ',');  // 去除最后一个逗号
            $sql .= $sql1;
        }else{
            $sql .= $field_a.'=\''.$value_a.'\'';
        }
        $this->sql = $sql;
    }




    /* 可返回多条数据 */
    public function ret_data() {
        $data = array();    $i = 0;
        while ($row = $this->result -> fetch()) {
            $data[$i] = $row;
            $i = $i + 1;
        }
        return $data;
    }
    /* 返回一条值 */
    public function ret_row(){
        return $this->result->rowcount();
    }


    /* 开始事务 */
    public function beginTransaction(){
        /* 打开连接 */
        if(!$this -> conn){
            /* 未打开连接,打开链接 */
            $this->connect();
        }
        $this->conn->beginTransaction();
    }
    /* 提交事务 */
    public function commit(){
        $this->conn->commit();
    }
    /* 回滚事务 */
    public function rollBack(){
        $this->conn->rollBack();
    }


    /* 写入数据库连接错误日志 */
    public function error_log($error) {
        $this->error = $error;
        file_put_contents('/var/www/html/log/'.date("Y-m-d").'.txt',date("Y-m-d H:i:s").' => '.'连接:'.$error."\r\n",FILE_APPEND);
    }
    /* 写入sql语法错误日志 */
    public function error_log2($error,$sql) {
        $error=$error[2];
        $this->error = $error;
        file_put_contents('/var/www/html/log/'.date("Y-m-d").'.txt',date("Y-m-d H:i:s").' => '.'语法:'.$error."\r\n".'sql语句:'.$sql."\r\n",FILE_APPEND);
    }


    /* 得到SQL语句 */
    public function get_sql(){return $this->sql;}
    /* 得到错误信息 */
    public function get_err(){return $this->error;}
}

/* 使用例子 */
//$test = new db('xc');	// 实例化一个链接对象,选择配置名称为'xc'的配置
//$test->sel('order',['id','name']);
//$test->add_where([['a','=','b']]);
//$test->add_page('submit_time','1','20');
//$test->query();
//$res = $test->ret_data();
//var_dump($res);

//$test->insert_row('user_amount',['taobao_user_id','short_url'],['66666666','QQQQQQ']);
//$test->query();
//$res = $test->ret_row();
//var_dump($res);


//$test->update_row('user_amount','rmb','123');
//$test->add_where([['taobao_user_id','=','1701611475']]);
//$test->query();
//echo $test->get_sql();
一个封装了DB的完整类 一个封装了DB的完整类,非常好用,运用于动态开发! 立即下载

相关推荐

php 数据库db类封装

基于php的mysql数据库的封装,包含数据库连接,以及基本的增删改查操作。

mysql DB封装类

为什么80%的码农都做不了架构师?>>> ...

weixin_33722405的博客 134

Python 逆向解析知乎盐选反爬字体,实现内容精准还原

本文详细解析了知乎盐选内容的反爬字体机制,并提供了使用Python逆向解析WOFF字体文件的完整方案。通过fontTools库构建解码字典,实现乱码文本的精准还原,帮助开发者应对动态字体策略,同时强调法律与道德风险。

weixin_29268385的博客 1300

【实战】nodejs 必会技能 —— 封装 mysql 数据库连接

运行中若遇到如下报错,请检查输入信息是否正确(host、port、user、password 等),jdbc配置中拿到的相关信息尤其是密码很可能是加密后的。若是担心网络问题造成连接失败,可以在连接reject部分添加定时并回调连接。数据库连接池 pool 可以有效避免频繁连接、断开导致的资源消耗。欢迎留言一起学习探讨。

程序边界 4007

告别社区5级:一个脚本搞定小米/红米BL解锁的账号绑定限制(附资源下载与避坑指南)

本文提供了一种绕过小米/红米设备Bootloader解锁社区等级限制的技术方案,适用于MIUI 12.5-14和HyperOS 1.0系统。通过自动化脚本临时修改系统组件,用户可快速完成账号绑定和设备解锁流程,附详细操作指南和常见问题解决方案。

weixin_27330481的博客 736

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 403

python——MySQL封装操作

【代码】python——MySQL封装操作。

python全栈 4070

ESP32+HC-SR04超声波测距:5分钟搞定智能避障小车核心功能(附完整代码)

本文详细介绍了如何使用ESP32开发板和HC-SR04超声波测距模块快速构建智能避障小车的核心功能。通过优化的接线方案、核心代码实现及调试技巧,帮助开发者5分钟内完成硬件连接与软件编程,实现高效的避障功能。附完整代码,适合创客教育和机器人开发。

weixin_29185199的博客 386

Mysql类的封装

封装一下Mysql类方便项目使用,如果又遇到后续的需求再进行添加,也可以制作成动态库更加方便

我的博客 822

CloudCompare 和 PCL:点云网格化分析与处理

点云网格化是将点云数据转化为规则网格的过程,其主要思想是将离散的点云投影到一个平面上,然后对该平面进行划分,形成一系列小区域。在点云网格化方面,PCL 提供了各种算法和工具,可以实现高效的点云网格化操作。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化算法参数,如搜索半径和最大三角形边长等,执行了网格化操作,最后将网格化结果保存到输出文件中。以上示例代码中,首先加载了输入的点云数据,然后通过设置合适的网格化参数,如分辨率等,执行了网格化操作,最后将网格化结果保存到输出文件中。

TechPulseZ的博客 1293

Android11原生设置屏幕亮由Gamma变化改为线性变化

从Android9 开始屏幕亮度调解变成非线性变化,这样的话就会出现 之前亮度变化很小,到后面时变化亮度很快; 修改为线性变化,只需要修改 ./frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache L

Android 4926

封装MySQL-DB类

''' fetchone()执行查询语句时,获取查询结果的第一个数据,返回一个元组 fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这 元组,再将这些元组装入一个元组返回 使用python连接数据库 ''' # from pymysql import * # # try: # conn = connect( # host='localhost',...

weixin_45905671的博客 269

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2448

php mysql db封装类_PHP封装了一个DB数据库mysql的类

// 配置数据库define('DB_HOST', '127.0.0.1'); //服务器地址define('DB_USER', 'root'); //用户名define('DB_PASS', ''); //密码define('DB_DATABASENAME', 'fenxiao'); //数据库class Dbmysql{/**变量**/private $tablename=""; /...

weixin_29924799的博客 91

Python电商网站全站爬虫实战:以京东为例的数据采集与分析

随着电子商务的蓬勃发展,电商数据已成为市场研究、竞争分析和消费者行为研究的重要资源。本文详细介绍了如何使用Python最新技术栈构建一个高效的电商网站全站爬虫,以京东为例实现商品数据的自动化采集。文章涵盖了爬虫的法律与伦理考量、技术选型、反爬虫策略应对、分布式架构设计以及数据存储方案,并提供了完整的代码实现。本爬虫系统采用Scrapy-Redis分布式框架、Selenium动态渲染、智能代理轮换和机器学习验证码识别等先进技术,能够稳定高效地抓取京东全站商品数据,为电子商务研究提供数据支持。关键词。

2201_76125261的博客 415

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

thinkphp mysql 类_PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例

本文实例讲述了PHP封装类似thinkphp连贯操作数据库Db类与简单应用。分享给大家供大家参考,具体如下:header("Content-Type:text/html;charset=utf-8");/***php操作mysql的工具类*/class Db{private $_db = null;//数据库连接句柄private $_table = null;//表名private $_wher...

weixin_35067439的博客 218

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

php db封装,自己用PHP封装了一个DB数据库mysql的类

conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("connect failed" . mysql_error()); //选择数据库mysql_select_db(DB_DATABASENAME, $this->conn); //设置编码格式mysql_query("SET NAMES utf8");//var_dump($co...

weixin_39722375的博客 148

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

php mysql db类是干什么用的_【PHP】自己用PHP封装了一个DB数据库 mysql 的类

define('DB_HOST', '127.0.0.1'); //118.244.196.37define('DB_USER', 'root'); //monswxdefine('DB_PASS', ''); //TGn3xFvZznvhCfwcdefine('DB_DATABASENAME', 'fenxiao');class Dbmysql{/**变量**/private $table...

weixin_39533361的博客 184

nodejs mysql db类_nodejs操作mongodb数据库封装DB类

/*** mongoose操作类(封装mongodb)*/var fs = require('fs');var path = require('path');var mongoose = require('mongoose');var logger = require('pomelo-logger').getLogger('mongodb-log');var options ={db_user:"...

weixin_35953401的博客 194

thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)

为了方便操作Mysql数据库, 封装类似thinkphp连贯操作数据库的Db类

weixin_42407617的博客 166

php7 mysql 封装_PHP封装了一个DB数据库 mysql 的类

// 配置数据库define('DB_HOST', '127.0.0.1'); //服务器地址define('DB_USER', 'root'); //用户名define('DB_PASS', ''); //密码define('DB_DATABASENAME', 'fenxiao'); //数据库class Dbmysql{/**变量**/private $tablename=""; /...

weixin_42356460的博客 165

nodejs mysql db类_nodejs mongodb 数据库封装DB类 -转

使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的。关于mongoose的安装就是 npm install -g mongoose这个DB类的数据库配置是基于auth认证的,如果您的数据库没有账号与密码则留空即可。/*** mongoose操作类(封装mongodb)*/var fs = require('fs');var path = require('...

weixin_32408723的博客 212

php封装一个mysql的类_PHP封装了一个DB数据库 mysql 的类

// 配置数据库define('DB_HOST', '127.0.0.1'); //服务器地址define('DB_USER', 'root'); //用户名define('DB_PASS', ''); //密码define('DB_DATABASENAME', 'fenxiao'); //数据库class Dbmysql{/**变量**/private $tablename=""; /...

weixin_30902943的博客 168

php7 mysql 封装_【PHP】自己用PHP封装了一个DB数据库 mysql 的类

define('DB_HOST', '127.0.0.1'); //118.244.196.37define('DB_USER', 'root'); //monswxdefine('DB_PASS', ''); //TGn3xFvZznvhCfwcdefine('DB_DATABASENAME', 'fenxiao');class Dbmysql{/**变量**/private $table...

weixin_36472962的博客 285

《php面向对象》 第6课:封装DB类 -1

项目开发过程中离不开数据库的操作,非常有必要封装一个DB类。DB类主要实现连接数据库、查询记录、添加记录、修改记录、删除记录等功能。 首先,我们要准备MYSQL数据库,创建一个myschool数据库,创建一个student数据表 -- -- Database: `myschool` -- CREATE DATABASE IF NOT EXISTS `myschool` DEFAULT CHA...

李书明(石家庄)的专栏 924

php mysql数据库封装_PHP封装了一个DB数据库 mysql 的类

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。// 配置数据库define('DB_HOST','127.0.0.1'); //服务器地址define('DB_USER','root'); //用户名define('DB_PASS',''); //密码define('DB_DATABASENAME','fenxiao'); //...

weixin_36459367的博客 209
下一篇: Centost 搭建PHP运行环境
火熾雲
博客等级 码龄7年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值