单例模式的用途,可用于数据库操作

<?php

Class Db
{
static private $whe;//条件
static private $tab;//表名
static private $lim;//分段变量
static private $order_by;//排序
private $str_key = array();//添加数据的键
private $str_val = array();//添加数据的值
private $key_val = array();//修改的数据
//防止外部实例对象
private function __construct(){}
//防止克隆
private function __clone(){} //唯一一个实例对象
static public $new_obj;
static public function table($t)
{
if (!self::$new_obj) {
self::$new_obj = new Db;
}
self::$tab=$t;
return self::$new_obj;
}
//链接数据库
public function mysql_connect()
{
$mysql_conf = array(
'host'=>'127.0.0.1:3306',//连接地址
'db'=>'test',//库名
'db_user'=>'root',//账号
'db_pwd'=>'root'//密码
);
return new MySQLi($mysql_conf['host'] , $mysql_conf['db_user'], $mysql_conf['db_pwd'] ,$mysql_conf['db']);//创建一个mysqli对象
} //条件
public function where($cond)
{
if (isset($cond)) {
self::$whe = ' where '.$cond;
}
return $this;
} //分页
public function limit($l)
{
if (isset($l)) {
self::$lim = ' limit '.$l;
}
return $this;
} //排序
public function order($odr)
{
self::$order_by = ' order by '. $odr;
return $this;
}
//查询语句
public function sql_select()
{
//准备一条SQL语句
return "select * from ".self::$tab.self::$order_by.self::$whe;
} //查询多条语句
public function select()
{
$reslut = mysqli_query($this->mysql_connect(),$this->sql_select().self::$lim);//也可以这么写:$this->mysql_connect()->query($this->sql_select().self::$lim);
$attr = $reslut->fetch_all(MYSQL_ASSOC);//MYSQL_ASSOC带数据库索引 MYSQL_NUM数值维索引 MYSQL_BOTH数值索引、数据库索引都有
return $attr;
} //查询单条语句
public function find()
{
$reslut = $this->mysql_connect()->query($this->sql_select());
$attr = $reslut->fetch_row(MYSQL_ASSOC);
return $attr;
} //添加或修改字段
public function data(Array $data)
{
if (!empty($data)) { foreach ($data as $key => $value) {
//添加的数据
$this->str_key[] = $key;
$this->str_val[] = $value;
//修改的数据
$this->key_val[] = is_string($value) ? $key.'= "'.$value.'"' : $key.'='.$value;
}
return $this;
}
} //添加字段
public function insert()
{ if (!isset($this->str_key) or !isset($this->str_val)) {
return 'error';
}else{
$key = implode(',', $this->str_key);
$val = implode(',', $this->str_val);
$mysql_content = 'insert into '.self::$tab.' ('.$key.') values('.$val.')';
$reslut =$this->mysql_connect()->query($mysql_content);
return $reslut;
}
} //修改字段
public function update()
{
if (!$this->key_val) {
return 'error';
}else{
$k_v = implode(', ',$this->key_val);
$mysql_content = 'update '.self::$tab.' set '.$k_v.' '.self::$whe;
$reslut =$this->mysql_connect()->query($mysql_content);
return $reslut;
}
} //删除字段
public function delete()
{
$mysql_content = 'delete from '.self::$tab.self::$whe;
$reslut =$this->mysql_connect()->query($mysql_content);
return $reslut;
} }
?>

下面是调用这个类

<?php
@include('./model.php');
//单条查询
$test = Db::table('test')->where('id=3')->find();
var_dump($test);
//分页查询
// $test1 = Db::table('test')->limit('0,2')->select();
// var_dump($test1);
//多条查询
// $test2 = Db::table('test')->order('id asc')->select();
// var_dump($test2);
//添加
// $test3 = Db::table('test')->data(['i'=>3,'age'=>6,'sex'=>9])->insert();
// var_dump($test3);
// 修改
// $test4 = Db::table('test')->where('id=30')->data(['IDinfo'=>789,'newid'=>456])->update();
// var_dump($test4);
// 删除
// $test5 = Db::table('test')->where('id>11')->delete();
// var_dump($test5);
?>

单例模式写MySQL model类,简单的增、删、改、查的更多相关文章

  1. Android SQLite(1)简单示例-增,删,改,查

    1.主要核心类,Sqlite编程要继承SQLiteOpenHelper import android.content.Context; import android.database.sqlite.S ...

  2. python学习-62 类属性的增 删 该 查

    类属性 1.类属性 类属性又称为静态变量,或者是静态数据.这些数据是与它们所属的类对象绑定的,不依赖于任何类实例. 2.增 删 改 查 class zoo: country = 'china' def ...

  3. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  4. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  5. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  6. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  7. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  8. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  9. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

随机推荐

  1. chrom中 background 调用pop.js

    //监听快捷键 chrome.commands.onCommand.addListener(function(command) { if (command == "cleanKey" ...

  2. Django 载入静态文件地址

    1,Django框架中有专门存放静态文件的目录. 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义静态内容 2,这些静态文件,他们统一存放在项目目录,templat ...

  3. 在Linux服务器上配置Transmission来离线下载BT种子

    Transmission简介 Transmission是一种BitTorrent客户端,特点是跨平台的后端和简洁的用户界面,硬件资源消耗极少,支持包括Linux.BSD.Solaris.Mac OS ...

  4. Linux 第七天

    软件包管理 1.软件包分类 1)源码包(脚本安装包) 优点: l  开源,如果有足够的能力,可以修改源代码 l  可以自由选择所需的功能 l  软件是编译安装,所以更加适合自己的系统,更加稳定也效率更 ...

  5. maven学习三

    做项目时使用maven构建项目已经是现在的流行做法了.那么maven的作用是什么呢?maven中的几个常用的命令都有什么用?下面我们来看一下. maven最大的作用就是用于对项目中jar包依赖的统一管 ...

  6. IIC通讯协议(非原创,转载他人,用于学习)

    I2C协议:1.空闲状态 2.开始信号 3.停止信号 4.应答信号 5.数据的有效性 6.数据传输 IIC详解 1.I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL 2.IIC总 ...

  7. 完整的SOPC开发流程体验

    课程目标:学习并掌握完整的SOPC开发流程. 开发环境:Quartus15.1 学习内容:1.使用QSYS工具建立能够运行流水灯项目的NIOS II处理器系统 2.在quartus ii中添加NIOS ...

  8. web工程的路径问题详解

    1.若/交由浏览器来解析,代表当前web站点的根路径:例:http://localhost:8080/            >超链接:<a href="/TestServlet ...

  9. ZZ:git只clone仓库中指定子目录和指定文件的实现

    原文链接: http://blog.csdn.net/xuyaqun/article/details/49275477 git目前唯一不能实现的是:不能像svn那样,针对子目录设置权限,这与git分布 ...

  10. 在Ubuntu登陆界面输入密码之后,黑屏一闪后,又跳转到登录界面

    现象:在Ubuntu登陆界面输入密码之后,黑屏一闪后,又跳转到登录界面.原因:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件.说明:X ...