<?php
$dbConfig = require_once(dirname(__FILE__).'/config.php'); class Db{
    public $conn;
    private $host = null;
    private $user     = null;
    private $password = null;
    private $database = null;
    private $tablename = null;
    private $dbConfig = null;
    private $sql = [
        'where'   => null,
        'orderBy' => null,
        'limit'   => null,
    ];     public function __construct($tablename = '') {
        global $dbConfig;
        $this->dbConfig = $dbConfig;
        $this->tablename = $dbConfig['DB_PREFIX'].$tablename;
        $this->user = $dbConfig['DB_USER'];
        $this->host = $dbConfig['DB_HOST'];
        $this->password = $dbConfig['DB_PWD'];
        $this->database = $dbConfig['DB_NAME'];
        $dsn = 'mysql:dbname='.$this->database.';host='.$this->host.';port=3306';
        try {
            $this->conn = new PDO($dsn, $this->user, $this->password); // also allows an extra parameter of configuration
        } catch(PDOException $e) {
            die('Could not connect to the database:<br/>' . $e);
        }
    }     public function table($tablename) {
        $this->tablename = $this->dbConfig['DB_PREFIX'].$tablename;
        return $this;
    }     public function getAll($fields = '*') {
        $querySql = sprintf("SELECT %s FROM %s", $fields, $this->tablename);
        if(!empty($this->sql['where'])) {
            $querySql .= ' WHERE ' . $this->sql['where']; 
        }
        if(!empty($this->sql['orderBy'])) {
            $querySql .= ' ORDER BY ' . $this->sql['orderBy']; 
        }
        if(!empty($this->sql['limit'])) {
            $querySql .= ' LIMIT ' . $this->sql['limit']; 
        }
        return $this->query($querySql);
    }     public function getOne($fields = '*') {
        $result = $this->getAll($fields);
        return isset($result[0]) ? $result[0] : null;
    }     public function insert($data) {
        foreach ($data as $key => &$value) {
            $value = addslashes($value);
        }
        $keys = "`".implode('`,`', array_keys($data))."`";
        $values = "'".implode("','", array_values($data))."'";
        $querySql = sprintf("INSERT INTO %s ( %s ) VALUES ( %s )", $this->tablename, $keys, $values);
        return $this->query($querySql);
    }     public function delete() {
        $querySql = sprintf("DELETE FROM %s WHERE ( %s )", $this->tablename, $this->sql['where']);
        return $this->query($querySql);
    }     public function update($data) {
        $updateFields = [];
        foreach ($data as $key => $value) {
            $up_value = addslashes($value);
            $updateFields[] = "`$key`='$up_value'";
        }
        $updateFields = implode(',', $updateFields);
        $querySql = sprintf("UPDATE %s SET %s", $this->tablename, $updateFields);         if(!empty($this->sql['where'])) {
            $querySql .= ' WHERE ' . $this->sql['where']; 
        }         return $this->query($querySql);
    }     public function query($querySql) {
        $querystr = strtolower(trim(substr($querySql,0,6)));
        $stmt = $this->conn->prepare($querySql);
        $ret = $stmt->execute();         if(!$ret) print_r($stmt->errorInfo());         if($querystr == 'select') {
            $retData = $stmt->fetchAll(PDO::FETCH_ASSOC);
            return $retData;
        }elseif($ret && $querystr == 'insert') {
            return $this->conn->lastInsertId();
        }else{
            return $ret;
        }
    }     public function limit($limit, $limitCount = null) {
        if(!$limitCount) {
            $this->sql['limit'] = $limit;
        }else{
            $this->sql['limit'] = $limit .','. $limitCount;
        }
        return $this;
    }     public function orderBy($orderBy) {
        $this->sql['orderBy'] = $orderBy;
        return $this;
    }     public function close() {
        return $this->conn = null;
    }     public function where($where) {
        if(!is_array($where)) {
            return null;
        }
        $crondsArr = [];
        foreach ($where as $key => $value) {
            $fieldValue = $value;
            if(is_array($fieldValue)) {
                $crondsArr[] = "$key ".$fieldValue[0]. ' ' . addslashes($fieldValue[1]);
            }else{
                $fieldValue = addslashes($fieldValue);
                $crondsArr[] = "$key='$fieldValue'";
            }
        }
        $this->sql['where'] = implode(' AND ', $crondsArr);         return $this;
    }
    
}

php实现简单链式操作mysql数据库类的更多相关文章

  1. Spring Data R2DBC响应式操作MySQL

    1. 前言 在使用R2DBC操作MySQL数据库 一文中初步介绍了r2dbc-mysql的使用.由于借助DatabaseClient操作MySQL,过于初级和底层,不利于开发.今天就利用Spring ...

  2. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  3. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  4. Java 操作MySql数据库

    Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...

  5. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  6. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  7. 本地通过Eclipse链接Hadoop操作Mysql数据库问题小结

    前一段时间,在上一篇博文中描述了自己抽时间在构建的完全分布式Hadoop环境过程中遇到的一些问题以及构建成功后,通过Eclipse操作HDFS的时候遇到的一些问题,最近又想进一步学习学习Hadoop操 ...

  8. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  9. .NET Core Dapper操作mysql数据库

    前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...

随机推荐

  1. Linux - 常用Shell软件

    tldr conda dstat htop oh-my-zsh https://github.com/nicolargo/glances neofetch

  2. 以C语言为例完成简单的网络聊天程序以及关于socket在Linux下系统调用的分析

    套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程. 端 ...

  3. 《实战Java高并发程序设计》读书笔记一

    第一章 走入并行世界 1.基本概念 同步:同步方法一旦开始,调用者必须等到方法调用返回后,才能继续后续操作 异步:一旦开始,方法调用就会立即返回,调用就可以继续后续操作 并发:表示两个或者多个任务一起 ...

  4. 外置ADC

    美信关于如何简化微控制器与温度传感器的接口设计?: 一般外置ADC与单片机UC之间通过SPI或SMBUS接口通信 当IO口比较紧张时可以选择脉冲或频率方波正比与测量值输出的外置ADC,此时也可以实现光 ...

  5. scrapy import CrawlSpider 报错

    from scrapy.spider import CrawlSpider 报错 import module CrawlSpider error 看了下以前一直用的scrapy0.14.1 使用的是B ...

  6. 算法复习 : 插入排序原理,记忆,时间复杂度 (7行java实现)

    最近啃了一遍吴伟民老师的<数据结构>,记录一些心得. 一种简洁的插入排序 : 1.重要概念 : 哨兵 1.在我们要排序的数组中,哨兵做为一个辅助的位置,一般是0下标的槽位做为哨兵 2.哨兵 ...

  7. JS-判断null值

    单独判断 null var str = null; if(str === null){ alert("is null"); } 同时判断 null 和 undefined 虽然nu ...

  8. python基础(二)---第一个程序

    1. 第一个程序 1.1 Hello Python书写步骤 步骤一:新建文本文档文件,修改名称为hello.py 步骤二:使用记事本打开文件,书写程序内容如下: 步骤三:打开命令行,输入执行指令:py ...

  9. sql注入小姿势

    利用/*!union*/可以绕过对union的过滤

  10. Springboot学习:介绍与HelloWorld

    1. 什么是 Spring boot Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用 整个Spring技术栈的一个大整合 ...