本文实例讲述了PHP基于单例模式实现的数据库操作基类。分享给大家供大家参考,具体如下:

配置文件:

$db = array(

'host'=>'localhost',

'user'=>'root',

'password'=>'',

'database'=>'test',

)

?>

php 数据库基类:

class db {

public $conn;

public static $sql;

public static $instance=null;

private function __construct(){

require_once('db.config.php');

$this->conn = mysql_connect($db['host'],$db['user'],$db['password']);

if(!mysql_select_db($db['database'],$this->conn)){

echo "失败";

};

mysql_query('set names utf8',$this->conn);

}

public static function getInstance(){

if(is_null(self::$instance)){

self::$instance = new db;

}

return self::$instance;

}

/**

* 查询数据库

*/

public function select($table,$condition=array(),$field = array()){

$where='';

if(!empty($condition)){

foreach($condition as $k=>$v){

$where.=$k."='".$v."' and ";

}

$where='where '.$where .'1=1';

}

$fieldstr = '';

if(!empty($field)){

foreach($field as $k=>$v){

$fieldstr.= $v.',';

}

$fieldstr = rtrim($fieldstr,',');

}else{

$fieldstr = '*';

}

self::$sql = "select {$fieldstr} from {$table} {$where}";

$result=mysql_query(self::$sql,$this->conn);

$resuleRow = array();

$i = 0;

while($row=mysql_fetch_assoc($result)){

foreach($row as $k=>$v){

$resuleRow[$i][$k] = $v;

}

$i++;

}

return $resuleRow;

}

/**

* 添加一条记录

*/

public function insert($table,$data){

$values = '';

$datas = '';

foreach($data as $k=>$v){

$values.=$k.',';

$datas.="'$v'".',';

}

$values = rtrim($values,',');

$datas = rtrim($datas,',');

self::$sql = "INSERT INTO {$table} ({$values}) VALUES ({$datas})";

if(mysql_query(self::$sql)){

return mysql_insert_id();

}else{

return false;

};

}

/**

* 修改一条记录

*/

public function update($table,$data,$condition=array()){

$where='';

if(!empty($condition)){

foreach($condition as $k=>$v){

$where.=$k."='".$v."' and ";

}

$where='where '.$where .'1=1';

}

$updatastr = '';

if(!empty($data)){

foreach($data as $k=>$v){

$updatastr.= $k."='".$v."',";

}

$updatastr = 'set '.rtrim($updatastr,',');

}

self::$sql = "update {$table} {$updatastr} {$where}";

return mysql_query(self::$sql);

}

/**

* 删除记录

*/

public function delete($table,$condition){

$where='';

if(!empty($condition)){

foreach($condition as $k=>$v){

$where.=$k."='".$v."' and ";

}

$where='where '.$where .'1=1';

}

self::$sql = "delete from {$table} {$where}";

return mysql_query(self::$sql);

}

public static function getLastSql(){

echo self::$sql;

}

}

$db = db::getInstance();

//$list = $db->select('demo',array('name'=>'tom','password'=>'ds'),array('name','password'));

//echo $db->insert('demo',array('name'=>'脚本之家','password'=>'123'));

//echo $db->update('demo',array("name"=>'xxx',"password"=>'123'),array('id'=>1));

echo $db->delete('demo',array('id'=>'2'));

db::getLastSql();

echo "

";

?>

希望本文所述对大家PHP程序设计有所帮助。

java 单例基类_PHP基于单例模式实现的数据库操作基类相关推荐

  1. java单例设计模式_Java设计模式之单例模式详解

    在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过.我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以 ...

  2. java单例代码_java中的单例模式的代码怎么写

    单例模式在我们日常的项目中十分常见,当我们在项目中需要一个这样的一个对象,这个对象在内存中只能有一个实例,这时我们就需要用到单例. 一般说来,单例模式通常有以下几种: 1.饥汉式单例 public c ...

  3. java单例设计模式双重_Java 设计模式 ——单例模式(饿汉,懒汉,双重锁,静态内部类)...

    设计模式: 是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式.设计模式免去我们自己再思考和摸索.就像是经典的棋谱,不同的棋局,我们用不同的棋谱 俗称"套路&q ...

  4. java+单例+恶汉_Java设计模式之单例模式(恶汉式和懒汉式)

    /** 单例模式:* 饿汉式:类一加载就创建对象* 懒汉式:用的时候,才去创建对象* 面试题:单例模式的思想是什么?写一个代码体现(我们最好写懒汉式的单例模式给面 /* * 单例模式: *       ...

  5. mongodb java 单例_JAVA单例MongoDB工具类详解

    shasha 2018年09月07日 681 0 JAVA单例MongoDB工具类 JAVA驱动版本: org.mongodb mongo-java-driver 3.0.2 工具类代码如下: pac ...

  6. java23种设计模式+单例_Java23种设计模式之单例模式

    一.单例模式简介 单例模式是Java设计模式中常见的一种模式.主要分为懒汉式单例.饿汉式单例.登记式单例: 单例模式的特点:  1.单例类只能有一个实例:  2.单例类必须自己创建自己的唯一的实例: ...

  7. Java单例的常见形式

    2019独角兽企业重金招聘Python工程师标准>>> Java单例的常见形式 本文目的:总结Java中的单例模式 本文定位:学习笔记 学习过程记录,加深理解,便于回顾.也希望能给学 ...

  8. java 单例 性能_java程序性能优化之设计优化---单例pk

    对于单例,很多人就要问了.为什么要使用单例,单例意义何在? 单例的产生是由于类的频繁使用,每次生成对象都要new,使用完值后GC要释放对象.这样一来系统性能降低,GC承受着巨大的压力.为了能够提升系统 ...

  9. java 单例设计模式 [

    为了保证类在内存中只能有一个对象,构造函数需要private外面不实例化对象,提供一个公共方法返回一个实例 //饿汉式 class Single{ //需要是static的,getInstance方法 ...

最新文章

  1. Prototype Pattern(原型模式)
  2. 学习强制删除正在运行的文件
  3. Amazon Aurora Serverless MySQL已正式可用
  4. Netty实战 IM即时通讯系统(十一)pipeline与channelHandler
  5. build文件_把编译时间加入到目标文件
  6. (JAVA)Random类
  7. php界面框架luy_LazyPHP
  8. redis 多进程_Redis 持久化
  9. 搜索引擎网站登录入口
  10. 【读书笔记《Android游戏编程之从零开始》】9.游戏开发基础(如何快速的进入 Android 游戏开发)
  11. 【emoji大全宝典】
  12. Ego Graph概念介绍
  13. html毕业设计任务要求,毕业设计任务及进度安排|毕业设计进度安排
  14. K8S学习笔记之将Google的gcr.io、k8s.gcr.io 换为国内镜像
  15. yolo数据集剪裁:切割目标框并将该框内的其他目标一并提取并转为可用数据集
  16. 餐厅小票打印模板_智慧餐厅多商家入驻小程序开发,成功案例:万足外卖!
  17. 【中创算力】第六届优秀员工表彰大会暨四月中创生日会
  18. Python pywifi ERROR Open handle failed 的问题
  19. k8s集群重新将master节点加入集群
  20. 使用格式刷重复复制格式

热门文章

  1. 有源rc电压放大器实验报告_为什么将放大器装在示波器探头前端?
  2. php的email函数发送失败,php中mail函数发送邮件失败的解决方法_php技巧
  3. ES6更新的3种精简化代码,(1.速写属性 2.速写方法 3.模板字符串)
  4. 计算机日常知识试题,计算机基础知识及日常维护测试题
  5. 小程序 getphonenumber_小程序入门,看这一篇就够了!
  6. 洛谷P1015回文数
  7. 算法导论 思考题6-3(Young氏矩阵)
  8. [转]如何写出让同事无法维护的代码?
  9. c语言printf、sprintf、vsprintf用法和区别
  10. MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令