MySQL-DB-封装-升级版
- <?php
- class DB {
- //定义属性
- private $host;//主机名
- private $port;//端口号
- private $name;//用户名
- private $pass;//密码
- private $dbname;//数据库名
- private $charset;//设置字符集
- private $link;//连接数据库
- private static $instance;
- //初始化 构造函数
- private function __construct($arr = array()){
- $this->host = isset($arr['host']) ? $arr['host'] : '127.0.0.1' ;
- $this->port = isset($arr['port']) ? $arr['port'] : '3306' ;
- $this->name = isset($arr['name']) ? $arr['name'] : 'root' ;
- $this->pass = isset($arr['pass']) ? $arr['pass'] : 'root' ;
- $this->dbname = isset($arr['dbname']) ? $arr['dbname'] : '1904a' ;
- $this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8' ;
- //连接数据库
- $this->db_connect();
- //选择数据库
- $this->db_usedb();
- //设置字符集
- $this->db_charset();
- }
- //连接数据库
- private function db_connect(){
- //主机名:端口号 用户名 密码
- $this->link = mysqli_connect($this->host.':'.$this->port, $this->name, $this->pass);
- //连接失败
- if(!$this->link){
- echo '数据库连接失败<br>';
- echo '错误编码是:'.mysqli_errno($this->link).'<br>';
- echo '错误信息是:'.mysqli_error($this->link).'<br>';
- exit;
- }
- }
- //选择数据库
- private function db_usedb(){
- mysqli_query($this->link, "use {$this->dbname}");
- }
- //设置字符集
- private function db_charset(){
- mysqli_query($this->link, "set names {$this->charset}");
- }
- //私有化克隆函数,防止外界克隆对象
- private function __clone()
- {
- }
- //单例访问统一入口
- public static function getInstance($arr)
- {
- if(!(self::$instance instanceof self))
- {
- self::$instance = new self($arr);
- }
- return self::$instance;
- }
- /**
- * 执行语句
- * @param $sql
- * @return source
- */
- private function query($sql){
- $res = mysqli_query($this->link, $sql);
- if(!$res){
- echo 'sql语句有错误<br>';
- echo '错误编码是:'.mysqli_errno($this->link).'<br>';
- echo '错误信息是:'.mysqli_error($this->link).'<br>';
- exit;
- }
- return $res;//成功返回数据
- }
- /**
- * 获取刚插入数据的id
- * @return int
- */
- public function getInsertId(){
- return mysqli_insert_id($this->link);
- }
- /**
- * 查询某个字段, 例如 select count(*), select username
- * @param $sql
- * @return string or int
- */
- public function getOne($sql){
- $query = $this->query($sql);
- return mysqli_free_result($query);
- }
- /**
- * 获取一行记录
- * @param $sql
- * @return array 一维
- */
- public function getRow($sql, $type='assoc'){
- $query = $this->query($sql);
- if(!in_array($type, array("assoc", "array", "row"))){
- die("mysql_query error");
- }
- $functionname = "mysqli_fetch_".$type;
- return $functionname($query);
- }
- /**
- * 前置条件:通过资源获取一条记录
- * @param $query source
- * @return array 一维
- */
- public function getRowFromSource($query, $type="assoc"){
- if(!in_array($type, array("assoc", "array", "row"))){
- die("mysql_query error");
- }
- $functionname = "mysqli_fetch_".$type;
- return $functionname($query);
- }
- /**
- * 获取所有记录
- * @param $sql
- * @return array 二维
- */
- public function getAll($sql){
- $query = $this->query($sql);
- $list = array();
- while ($row = $this->getRowFromSource($query)) {
- $list[] = $row;
- }
- return $list;
- }
- /*
- * 新增数据方法
- * @param1 $table, $data 表名 数据
- * @return 上一次增加操做产生ID值
- */
- public function insert($table, $data){
- //遍历数组,得到每一个字段和字段的值
- $kstr = '' ;
- $vstr = '' ;
- foreach ($data as $key => $val) {
- //$key是字段名, $val是对应的值
- $kstr .= $key."," ;
- $vstr .= "'$val',";
- }
- $kstr = rtrim($kstr, ',');
- $vstr = rtrim($vstr, ',');
- //添加的sql语句
- $sql = "insert into $table ($kstr) values ($vstr)";
- //执行
- $this->query($sql);
- //返回上一次增加操做产生ID值
- return $this->getInsertId();
- }
- /*
- * 删除一条数据方法
- * @param1 $table, $where=array('id'=>'1') 表名 条件
- * @return 受影响的行数
- */
- public function deleteOne($table, $where){
- if(is_array($where)){
- foreach ($where as $key => $val) {
- $condition = $key.'='.$val;
- }
- } else {
- $condition = $where;
- }
- $sql = "delete from $table where $condition";
- $this->query($sql);
- //返回受影响的行数
- return mysqli_affected_rows($this->link);
- }
- /*
- * 删除多条数据方法
- * @param1 $table, $where 表名 条件
- * @return 受影响的行数
- */
- public function deleteAll($table, $where){
- if(is_array($where)){
- foreach ($where as $key => $val) {
- if(is_array($val)){
- $condition = $key.' in ('.implode(',', $val) .')';
- } else {
- $condition = $key. '=' .$val;
- }
- }
- } else {
- $condition = $where;
- }
- $sql = "delete from $table where $condition";
- $this->query($sql);
- //返回受影响的行数
- return mysqli_affected_rows($this->link);
- }
- /*
- * 修改数据方法
- * @param1 $table,$data,$where 表名 数据 条件
- * @return 受影响的行数
- */
- public function update($table,$data,$where){
- //遍历数组,得到每一个字段和字段的值
- $str='';
- if(is_array($data)){
- foreach($data as $key=>$v){
- $str.="$key='$v',";
- }
- $str=rtrim($str,',');
- //修改的SQL语句
- $sql="update $table set $str where $where";
- } else {
- //修改的SQL语句
- $sql="update $table set $data where $where";
- }
- $this->query($sql);
- //返回受影响的行数
- return mysqli_affected_rows($this->link);
- }
- }
- //$db_dsn = [
- // 'host' => '127.0.0.1',
- // 'port' => '3306',
- // 'name' => 'root',
- // 'pass' => 'root',
- // 'dbname' => '1904a',
- // 'charset' => 'utf8'
- //];
- $db = DB::getInstance($arr=[]);
- $sql = "select * from caiji";
- $data = $db->getAll($sql);
- //$insert_data = [
- // 'title' => '1234',
- // 'img' => 'https://cdn.huodongxing.com/logo/202105/8598383158600/294155439743834_v2small.jpg',
- // 'start_time' => '06月15日'
- //];
- //$res = $db->insert('caiji',$insert_data);
- //var_dump($res);
- //echo $db->getInsertId();
- //$where = ['id'=> '453'];
- //$res = $db->deleteOne('caiji',$where);
- //print_r($res);
- $update_data = [
- 'title' => '11111111',
- 'img' => '2222222',
- 'start_time' => '6月10日'
- ];
- $where = 'id=452';
- $res = $db->update('caiji',$update_data,$where);
- var_dump($res);
MySQL-DB-封装-升级版的更多相关文章
- rhel6.4 安装nodejs和Mysql DB服务
rhel6.4 安装nodejs和Mysql DB服务 安装好redhat6.4虚拟机后, 安装软件: # yum install gcc-c++ openssl-devel Loaded plugi ...
- LightMysql:为方便操作MySQL而封装的Python类
原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python ...
- mysql数据库封装和 分页查询
1 之前我们学到了php连接mysql数据库的增删改查,中间要多次调用数据库, 而且以后用到的表比较多,上传中如果需要改数据的话会非常麻烦,但是如果 我们把数据库封装,到时就可以很轻松的把改掉一些数据 ...
- java连接mysql底层封装
package com.dao.db; import java.sql.Connection; import java.sql.SQLException; /** * 数据库连接层MYSQL * @a ...
- nodejs学习(三)--express连接mysql数据库,mysql查询封装
一.说一下 连接不同的数据库需要安装相应的插件,此demo使用mysql数据库,需自行安装mysql数据库软件. 新建数据库webapp, 新建表users: 二.直接开码 npm install m ...
- mysql数据库封装
<?php /** * name: sql操作封装,可扩展 . * User: 张云山 * Date: 2016/9/4 * Time: 22:02 */ //php文件编码设置header(' ...
- mysql DB server端,如何让读写更快
其实,我不是专业的DB管理同学,甚至算不上会了解.只是在最近的工作中,遇到了DB server端优化的契机,所以把这些手段记录下来: 通过调整这个参数的值,可以让DB更给力: 这两个参数的含义: 1. ...
- Mysql,JDBC封装
1.完成对数据库的表的增删改的操作 2.查询返回单条记录 3.查询返回多行记录 4.可以使用反射机制来封装,查询单条记录 5.反射机制,查询多条记录 package myjdbc; import ja ...
- (转)使用Amoeba 实现MySQL DB 读写分离
Amoeba(变形虫)项目是一个开源框架,于2008年开始发布一款 Amoeba for Mysql软件: 这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQ ...
- 在.NET连接MySQL以及封装好的MySQLHelper.cs
1.首先上MySQL网站下驱动:http://www.mysql.com/products/connector/ 2.安装下载的安装包 3.我们在Visual Studio里创建一个Web Appli ...
随机推荐
- Java UDP实现聊天功能代码【转】
感谢大佬大佬!!!:https://www.cnblogs.com/woshijpf/p/3735684.html 我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务 ...
- smartimageview 的原理
自定义的控件在布局文件中的引用都需要指定类的完整路径 1.自定义了一个MyImageview类继承了Imageview,添加三个构造方法 2.添加一个setImageUrl方法接受一个图片ur ...
- JSP中获取各种路径的方法
我们当中可能有很多人不知道如何获得jsp中的路径怎么获取 方法一: <a href ="test.jsp?p=fuck">跳转到test2</a> 方法二: ...
- FTP工具安装
开放ftp端口,开房ftp服务即可 firewall-cmd --add-service=ftp --permanent firewall-cmd --reload
- oracle查看当前正在使用的数据库
select name from V$DATABASE; 也可以用 select SYS_CONTEXT('USERENV','INSTANCE_NAME') from dual;
- Solution -「多校联训」古老的序列问题
\(\mathcal{Description}\) Link. 给定序列 \(\{a_n\}\),和 \(q\) 次形如 \([L,R]\) 的询问,每次回答 \[\sum_{[l,r]\su ...
- [LeetCode]14.最长公共前缀(Java)
原题地址: longest-common-prefix 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入:st ...
- 多端开发之uniapp开发app
最近在给f做一些工具app,学习了不少关于uniapp编写android应用的知识. 首先,App应用的创建的时候要选择项目类型为uniapp类型.最开始我选择的是h5+项目,这种项目就比较容易写成纯 ...
- 【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成
一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...
- Spring Cloud之微服务注册到Eureka Server集群后访问改造
上篇Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼ - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)已经已经成功将两个微服务注册到集群中,那么能正常能与注 ...