php单例模式封装数据库操作类增删改查
<?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单例模式封装数据库操作类增删改查的更多相关文章
- Linq 数据库操作(增删改查)
Linq数据库增删改查 Linq是一种查询语言,集成包含在formwork中,包含在C#语言中,它的作用是降低查询的门槛,提高开发效率,是我们必须掌握的技术之一,下面是我自己对linq数据库操作的方法 ...
- spring boot快速入门 4: jpa数据库操作 实现增删改查
spring boot jpa逆向生成表 简单实例: 第一步:pom文件: <?xml version="1.0" encoding="UTF-8"?&g ...
- 初次尝试PHP——一个简单的对数据库操作的增删改查例子
第一次学习PHP,很多人说PHP是最好的语言,学习了一点点,还不敢说这样的话,不过确实蛮好用的. 做了一个简单的对数据库的增删改查的操作,主要是将四种操作写成了独立的函数,之后直接调用函数.以下是代码 ...
- flask 数据库操作(增删改查)
数据库操作 现在我们创建了模型,生成了数据库和表,下面来学习常用的数据库操作,数据库操作主要是CRUD,即Create(创建).Read(读取/查询).Update(更新)和Delete(删除). S ...
- MySQL数据库操作:“增删改查”,忘记密码重置等。
[注] 数据库的“增删查改”,参考原作者Wid:http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d11.感谢大佬们的技术分享 ...
- Java 数据库操作oracle增删改查,通用封装基于hashmap
pt1:首先安装oracle连接驱动 下载地址:https://pan.baidu.com/s/1jW_ofgU4eJmAn7Y2J5B46A 密码:epkz 1.将ojdbc6.jar导入项目中 ...
- ThinkPHP 数据库操作(二) : 增删改查
基本使用 可以直接使用数据库运行原生SQL操作了,支持 query (查询操作)和 execute (写入操作)方法,并且支持参数绑定. Db::query('select * from think_ ...
- laravel中的数据库操作(增删改查)方法一
导入命名空间和DBnamespace App\Http\Controllers; use Illuminate\Support\Facades\DB; public function index(){ ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
随机推荐
- 【小白视频学Java for循环】3分钟学会Java的for循环,让看懂for循环嵌套再不是难事
目录 一.单个for循环介绍 二.for循环嵌套 听讲时能听懂的for循环为什么一做题就晕菜?一个for循环还勉强能看懂,但为什么一看到双重for循环脑子里就感觉脑子全是浆糊? 如果有上述问题那么就继 ...
- MySQL基础(7) | 触发器
MySQL基础(7) | 触发器 基本语法 创建 CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EA ...
- python基礎學習第一天
python歷史 Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python 由 Guido van Rossum 于 1989 年底在荷兰国家数学和计算机科学研究所设计出来 ...
- js获取时间及转化
有关Javascript的本地时间获取,下面我直接用代码来进行举例吧 let time = new Date(); let month = time.getMonth()+1; //获取的月份0~11 ...
- IE浏览器中IFrame被加载两次问题的解决-sunziren
本文为作者sunziren原创,首发博客园,转载请注明出处. 昨天遇到了一个问题,先上代码. var content = '<iframe src="www.baidu.com&quo ...
- opencv —— 同时识别三种颜色
要点: 1.识别一种颜色 minH = ; //色相 maxH = ; minS = ; //饱和度 maxS = ; minV = ; // inRange(原图像, 最小值的范围, 最大值的范围, ...
- 吴裕雄--天生自然 R语言开发学习:R语言的安装与配置
下载R语言和开发工具RStudio安装包 先安装R
- 关于 DP 的一些内容
0.关于 动态规划是编程解题的一种重要手段.1951 年美国数学家 R.Bellman 等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解 ...
- go 总结常用函数
golang截取字符串 对于字符串操作,截取字符串是一个常用的, 而当你需要截取字符串中的一部分时,可以使用像截取数组某部分那样来操作,示例代码如下: package main import &quo ...
- C#设计模式学习笔记:简单工厂模式(工厂方法模式前奏篇)
本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7551373.html,记录一下学习过程以备后续查用. 一.引言 简单工厂模式并不属于GoF23里面的设计模式 ...