php实现简单链式操作mysql数据库类
<?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数据库类的更多相关文章
- Spring Data R2DBC响应式操作MySQL
1. 前言 在使用R2DBC操作MySQL数据库 一文中初步介绍了r2dbc-mysql的使用.由于借助DatabaseClient操作MySQL,过于初级和底层,不利于开发.今天就利用Spring ...
- Code First操作Mysql数据库
前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- Java 操作MySql数据库
Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...
- mysqli扩展库操作mysql数据库
配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
- 本地通过Eclipse链接Hadoop操作Mysql数据库问题小结
前一段时间,在上一篇博文中描述了自己抽时间在构建的完全分布式Hadoop环境过程中遇到的一些问题以及构建成功后,通过Eclipse操作HDFS的时候遇到的一些问题,最近又想进一步学习学习Hadoop操 ...
- 原生Jdbc操作Mysql数据库开发步骤
原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤: 1.导入数据库驱动包 ...
- .NET Core Dapper操作mysql数据库
前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...
随机推荐
- JS高级---原型的引入,原型添加的方法解决数据共享
原型的引入:解决:通过构造函数创建对象带来的问题,即浪费内存(一个对象开一个内存,多个对象开多个内存) 通过原型来添加方法,解决数据共享,节省内存空间 <script> function ...
- mysql客户端的导出数据库表和数据库数据等相关操作
1.navicat for mysql 11.0.10客户端 导出数据库里所有表中的所有数据,方法如下,选中表,在横向导航栏里面找到“导出向导”,选中sql,点击下一步,点击全选,并且选中“应用相同目 ...
- 简单桶排序(Bucket Sort)
1.基本思想 桶排序是将待排序集合中处于同一个值域的元素存放在同一个桶中1. 2.算法设计2 假设有一个班级有5个人,这次期末他们分别考了5分,2分,4分,5分,8分(满分为10分).需要将这些分数从 ...
- Gitee 码云 pages 搭建vue项目记录
首先要在.gitignore文件去掉/dist,这个文件默认是不上传的,但是执行打包bulid的时候会生成dist文件,而线上访问的是打包之后的dist文件: vue.config.js文件,如下图箭 ...
- 读书小记--<态度>
前言 前段时间再读了吴军老师的<态度>,分享的是和女儿的日常书信.觉得收获很多,同时推荐他的<浪潮之巅><数学之美><大学之路>系列书籍. 下面是个人的 ...
- redis 字符串操作
redis 字符串创建SET操作 127.0.0.1:6379> set number "10086" OK 127.0.0.1:6379> set book &quo ...
- 极简的js点击组图切换效果
程序员进行前端开发时,时常要用到点击切换组图的动画效果,网上确实有很多此类插件,但是都很麻烦,乌糟糟无数代码,有那个看的时间,自己都能把功能写完了.在这里我提供一段极简的js点击组图切换效果代码,包含 ...
- Educational Codeforces Round 81 (Rated for Div. 2) - D. Same GCDs(数学)
题目链接:Same GCDs 题意:给你两个数$a$,$m(1 \leq a < m \leq 10^{10})$,求有多少个$x$满足:$0 \leq x < m$且$gcd(a,m)= ...
- redis(一)动态字符串
redis 动态字符串 概述 Sda(Simple Dynamic String) 简单动态字符串是 redis中用来表示字符串的结构,而不是传统 C 字符串. 主要的特点就是Sda要做到高效和 二进 ...
- 用for循环创建对象
以下代码Demo: public class TestDemo { public static void main(String[] args) { //以创建5个student为例 int coun ...