db.class的实现类
单例类,能操作数据库,能拼接sql语句,能写入日志
<?php class mysql extends db{
private static $ins=null;
private $conn=null;
private $conf=array();
//单例模式 protected function __construct(){
$this->conf=conf::getIns(); $this->connect($this->conf->host,$this->conf->user,$this->conf->password);
$this->select_db($this->conf->db);
$this->setChar($this->conf->char);
}
public static function getIns(){
if(self::$ins instanceof self){
return self::$ins;
}
self::$ins=new self();
return self::$ins;
}
public function connect($h,$u,$p){
$this->conn=mysql_connect($h,$u,$p);
if(!$this->conn){
$err=new Exception('连接失败');
throw $err;
}
}
protected function select_db($db){
$sql='use '.$db;
$this->query($sql);
}
protected function setChar($char){
$sql='set names '.$char;
return $this->query($sql);
}
public function query($sql){
if(defined('DEBUG')){
log::write($sql);
} $rs=mysql_query($sql,$this->conn); if(!$rs){
log::write(mysql_error());
}
return $rs;
} /*
查询多行数据
params $sql select型语句
return array/boolean
*/
public function getAll($sql){
$rs=$this->query($sql); $arr=array();
while(($row=mysql_fetch_assoc($rs))!==false){
$arr[]=$row;
}
return $arr;
} /*
查询单行数据
params $sql select型语句
return array/boolean
*/
public function getRow($sql){
$rs=$this->query($sql); return mysql_fetch_assoc($rs);
} /*
查询单个数据
params $sql select型语句
return array/boolean
*/
public function getOne($sql){
$rs=$this->query($sql);
$row=mysql_fetch_row($rs);
return $row[0];
}
//返回影响的行数
public function affected_rows(){
return mysql_affected_rows($this->conn);
}
//返回最新的auto_increment列的自增长的值
public function insert_id(){
return mysql_insert_id($this->conn);
}
/* 自动执行insert/update语句
params $sql select型语句
return array/boolean
$this->autoExecute('user',array('username'=>'zhangsan','email'=>'zhang@123.com'),'insert');
将自动形成 insert into user (username,email) values ('zhangsan','zhang@123.com');
*/
public function autoExecute($table,$arr,$mode='insert',$where=' where 1 limit 1'){
if(!is_array($arr)){
return false;
} if($mode=='update'){
$sql='update '.$table.' set ';
foreach ($arr as $k => $v) {
$sql.=$k."= '". $v ."',";
}
$sql=rtrim($sql,',');
$sql.=$where; return $this->query($sql);
} $sql='insert into '.$table.' ('.implode(',',array_keys($arr)).')';
$sql.=' values (\'';
$sql.=implode("','",array_values($arr));
$sql .='\')'; return $this->query($sql);
}
}
?>
db.class的实现类的更多相关文章
- DB字段顺序与类的属性顺序一致:{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER
{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER 应用程序中类型T ...
- Discuz!数据库操作DB类和C::t类介绍
类定义文件 DB类: 文件\source\class\class_core.php class DB extends discuz_database {} discuz_database类定义 文件\ ...
- PHP用单例模式实现一个数据库类
使用单例模式的出发点: 1.php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 使用单例模式, 则可以避免大量的new 操作消耗的资源. 2.如果系统中需要有一个类来全局控制某些 ...
- Android SQLiteOpenHelper类的使用
SQLiteOpenHelper类是Android平台提供的用于SQLite数据库的创建.打开以及版本管理的帮助类.一般需要继承并这个类并实现它的onCreate和onUpgrade方法,在构造方法中 ...
- C# 访问MongoDB 通用方法类
using MongoDB.Driver; using System; namespace MongoDBDemo { public class MongoDb { public MongoDb(st ...
- Android项目中单实例数据库类,解决database is locked
一.数据库操作 package com.ping.db; import android.content.Context; import android.database.sqlite.SQLiteDa ...
- 继承关系在内存和DB中的映射
使用 将若干相似的类映射为单表,对拥有许多特殊数据的类使用具体表继承. 对高层次使用类表继承,对低层次使用具体表继承. Single Table Inheritance 在DB中将类继承层次设计为一个 ...
- ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄) System.Data—— 所有的一般数据访问类 S(转载)
ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄)System.Data—— 所有的一般数据访问类System.Data.Common—— 各个数据提供程序共享(或重写)的类Sys ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...
随机推荐
- leetcode—sum root to leaf number
题目如下: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a ...
- Sitecore Digital Marketing System, Part 1: Creating personalized, custom content for site visitors(自定义SiteCore中的 Item的Personalize的Condition) -摘自网络
Sitecore’s Digital Marketing System (DMS) can help you personalize the content your site displays to ...
- openstack api
1,Identity service generates authentication tokens that permit access to the openstack service REST ...
- [OC Foundation框架 - 23] 文件管理
A. 目录管理 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 // 1.获取文件属性 NSString *path = @& ...
- UVA 10806 Dijkstra, Dijkstra.(费用流)
n个点的无向带权图,求1->n的最短往返路径,不走重复边. 这里涉及到一个知识点:求无向图上s->t的最短路,其实就是费用流. 而求1->n最短往返路径呢?增加源点s,由s到1加弧, ...
- 关于UIImage类的对象两种初始化方法的区别
1.imageNamed: UIImage *image = [UIImage imageNamed:"]; UIImage的类方法 第一次读取图片的时候,先把这个图片放到缓存中,下次再使用 ...
- mac不可或缺的套件管理器Homebrew
Homebrew 1.简介 可以帮助我们快速安装软件, 如 brew install svn 快速卸载软件 , 如 brew uninstall svn 2.下载 打开终端, /usr/bin/ru ...
- 在与SQL Server建立连接时出现与网络相关的或特定于实例的错误
向往前一样.学习牛腩新闻公布系统的视频,写程序,打开数据库.出现一个框框,具体内容例如以下: 数据库连接不上.全部的工作都要歇班,捣鼓了会儿,简单总结一下解决该问题的方法. 首先:第一步,程序--SQ ...
- [置顶] 最小生成树Prim算法
二话不说直接贴代码 原图传送门:http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/minispantree.asp 但是上面展现的是克鲁斯卡尔算法 ...
- CocoStudio 创建简单UI资源并加入�到project
打开CocoStudio UI编辑器新项目,设置画布480*320, 加入�一个标签和一个button控件 导出项目,生成所须要的资源文件, 拷贝到cocos2dprojectResources文件夹 ...