<?php
//三私一公 单例
class Db{
//数据库连接对象
private static $instance;
private static $table_name;
private $pdo;
//防止类直接实例化
private function __construct(){
$this->pdo = new PDO("mysql:host=127.0.0.1;dbname=test_system", "root", "");
$this->pdo->query("set names utf8");
}
//禁止克隆对象
private function __clone(){}
//返回数据库实例对象
public static function getDb($table_name){
self::$table_name = $table_name;
if(!(self::$instance instanceof self)){
self::$instance = new self;
}
return self::$instance;
}
function add($table_name, $data){
$keys = implode(",", array_keys($data));
$value = "'".implode("','", array_values($data))."'";
$sql = "insert into $table_name ($keys) values($value) ";
$r = $this->pdo->exec($sql);
$this->getErrorInfo();
return $r;
}
function addAll($table_name, $data){
$keys = implode(",", array_keys($data[0])); $arr = [];
foreach ($data as $k => $v) {
$arr[] = "('".implode("','", array_values($v))."')";
}
$value = implode(",", $arr); $sql = "insert into $table_name ($keys) values $value";
$r = $this->pdo->exec($sql);
$this->getErrorInfo();
return $r; }
function update($table_name, $data){
$id = $data['id'];
unset($data['id']);
$arr = [];
foreach($data as $k=>$v){
$arr[] = $k."='".$v ."'";
}
$str = implode(",", $arr);
$sql = "update $table_name set $str where id=$id"; $r = $this->pdo->exec($sql);
$this->getErrorInfo();
return $r;
} function select($table_name, $where = '1=1'){
$sql = "select * from $table_name where $where ";
$res = $this->pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$this->getErrorInfo();
return $res; }
function find($table_name, $where = '1=1'){
$sql = "select * from $table_name where $where ";
$res = $this->pdo->query($sql)->fetch(PDO::FETCH_ASSOC);
$this->getErrorInfo();
return $res;
}
function getErrorInfo(){
if($this->pdo->errorCode() != '00000'){
echo "<pre>";
print_r($this->pdo->errorInfo());
exit;
}
}
function delete($id){
$table_name = self::$table_name;
if(is_array($id)){
$id = implode(',', $id);
}
$sql = "delete from $table_name where id in ($id)";
$r = $this->pdo->exec($sql);
$this->getErrorInfo();
return $r;
} }
function M($table_name){
$db = Db::getDb($table_name);
return $db;
}; $data = [
[
'name'=>'雪碧',
'class_name'=>'3333333',
],
[
'name'=>'可乐',
'class_name'=>'3333333',
],
]; $r = M('user')->delete(726);
echo $r;

php单例模式封装数据库操作类增删改查的更多相关文章

  1. Linq 数据库操作(增删改查)

    Linq数据库增删改查 Linq是一种查询语言,集成包含在formwork中,包含在C#语言中,它的作用是降低查询的门槛,提高开发效率,是我们必须掌握的技术之一,下面是我自己对linq数据库操作的方法 ...

  2. spring boot快速入门 4: jpa数据库操作 实现增删改查

    spring boot jpa逆向生成表 简单实例: 第一步:pom文件: <?xml version="1.0" encoding="UTF-8"?&g ...

  3. 初次尝试PHP——一个简单的对数据库操作的增删改查例子

    第一次学习PHP,很多人说PHP是最好的语言,学习了一点点,还不敢说这样的话,不过确实蛮好用的. 做了一个简单的对数据库的增删改查的操作,主要是将四种操作写成了独立的函数,之后直接调用函数.以下是代码 ...

  4. flask 数据库操作(增删改查)

    数据库操作 现在我们创建了模型,生成了数据库和表,下面来学习常用的数据库操作,数据库操作主要是CRUD,即Create(创建).Read(读取/查询).Update(更新)和Delete(删除). S ...

  5. MySQL数据库操作:“增删改查”,忘记密码重置等。

    [注] 数据库的“增删查改”,参考原作者Wid:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d11.感谢大佬们的技术分享 ...

  6. Java 数据库操作oracle增删改查,通用封装基于hashmap

    pt1:首先安装oracle连接驱动 下载地址:https://pan.baidu.com/s/1jW_ofgU4eJmAn7Y2J5B46A  密码:epkz 1.将ojdbc6.jar导入项目中 ...

  7. ThinkPHP 数据库操作(二) : 增删改查

    基本使用 可以直接使用数据库运行原生SQL操作了,支持 query (查询操作)和 execute (写入操作)方法,并且支持参数绑定. Db::query('select * from think_ ...

  8. laravel中的数据库操作(增删改查)方法一

    导入命名空间和DBnamespace App\Http\Controllers; use Illuminate\Support\Facades\DB; public function index(){ ...

  9. 设计模式 - 单例模式mysql数据库操作类

    待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...

随机推荐

  1. JS隐藏显示图片

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  2. JS DOM用不同方法获取节点及对节点插入、复制和移除

    操作节点的方法 appendChild() insertBefore() replaceChild() cloneNode() normalize() splitText() sppendChild( ...

  3. MySql概述及入门(五)

    MySql概述及入门(五) MySQL集群搭建之读写分离 读写分离的理解 为解决单数据库节点在高并发.高压力情况下出现的性能瓶颈问题,读写分离的特性包括会话不开启事务,读语句直接发送到 salve 执 ...

  4. mysql 不能加载表问题

    记录一次 mysql 5.7 下,出现重启数据库后不能加载特定表的问题处理. 搜索了很多的类似的错误,大多都是说因为外键同名的索引丢失的情况.但在5.7这个版本下,会禁止更新外键关联的索引. 最后经过 ...

  5. python中的“赋值与深浅拷贝”

    Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的 ...

  6. Java 8 Stream Api 中的 peek 操作

    1. 前言 我在Java8 Stream API 详细使用指南[1] 中讲述了 [Java 8 Stream API]( "Java 8 Stream API") 中 map 操作 ...

  7. 吴裕雄--天生自然HADOOP操作实验学习笔记:hdfs分布式文件系统安装

    实验目的 复习安装jdk 学习免密码登录 掌握安装配置hdfs集群的方法 掌握hdfs集群的简单使用和检查其工作状态 实验原理 1.hdfs是什么 hadoop安装的第一部分是安装hdfs,hdfs是 ...

  8. 【内推】微软北京深圳招聘多名Cloud Solution Architect

    Azure is the most comprehensive, innovative and flexible cloud platform today and Microsoft is hirin ...

  9. RS323串口连接仪器,接收仪器信息

    SerialPort sp1 = new SerialPort(); getBloodPressur(); public void getBloodPressur() { try { string[] ...

  10. python全栈学习 day03

    换行符: \n 制表符: \t 字符串截取:顾头不顾尾 s[首:尾:步长] 首--->尾走向 和 步长方向一致 s[0:4:2] s[4:0:-2] a = "qwertyui&quo ...