接口
abstract class db{
//连接服务器
public abstract function connect($n,$u,$p);
//发送查询
protected abstract function query($sql);
//查询单个数据
public abstract function getone($sql);
//查询单行数据
public abstract function getrow($row);
//查询多行数据  自动执行insert/update语句
public abstract function autoexecute($table,$data,$act='insert',$where='');
}
 
--------------------------------------------------------------------------------------------------------------
 
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->pwd);
$this->select_db($this->conf->db);
$this->setchar($this->conf->char);
}
public function __destruct(){
}
public static function getins(){
if(!(self::$ins instanceof self)){
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;
}
}
public function select_db($db){
$sql='use '.$db;
$this->query($sql);
}
public function setchar($char){
$sql='set names '.$char;
return $this->query($sql);
}
public function query($sql){
$rs=mysql_query($sql,$this->conn);
log::write($sql);
return $rs;
}
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.='\')';
}
public function getall($sql){
$rs=$this->query($sql);
$list=array();
while($row=mysql_fetch_assoc($rs)){
$list[]=$row;
}
return $list;
}
public function getrow($sql){
$rs=$this->query($sql);
return mysql_fetch_assoc($rs);
}
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);
}
}

封装一个mysql类(ggshop)的更多相关文章

  1. 使用libzplay库封装一个音频类

    装载请说明原地址,谢谢~~      前两天我已经封装好一个duilib中使用的webkit内核的浏览器控件和一个基于vlc的用于播放视频的视频控件,这两个控件可以分别用在放酷狗播放器的乐库功能和MV ...

  2. 1.使用C++封装一个链表类LinkList

     使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸********** ...

  3. Swift - 简单封装一个工具类模板

    创建模板类(封装一个类) 例1:新建一个名字叫做 Product 的类 Product.swift File 的内容 class Product { var name: String var desc ...

  4. 使用Java封装一个DBUtils类(反射)

    刚开始学JavaWeb时,我是调用N个setter方法将从数据库中查询出的数据封装成JavaBean的,极其繁琐. 后来了解SpringJDBC后,发现它提供的接口非常简单,然后就想自己封装一个简单的 ...

  5. 简单的一个MySQL类的实现:

    '''定义MySQL类:1.对象有id.host.port三个属性2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一3.提供两种实例化方式,方式一:用户传入host和por ...

  6. 封装一个帮助类来写文件到android外置存储器上

    项目地址:点击打开 项目简介:写文件到android外置存储器的一个帮助类,和它的demo程序 它是如何工作的呢? 1.创建 AppExternalFileWriter 对象并传递context(上下 ...

  7. 使用AutoFac实现依赖注入(封装一个注册类)

    public class AutoFacBootStrapper { public static void CoreAutoFacInit() { var builder = new Containe ...

  8. java分享第十七天-03(封装操作mysql类)

     JAVA操作mysql所需jar包:mysql-connector-java.jar代码: import java.sql.*; import java.util.ArrayList; import ...

  9. 封装一个 员工类 使用preparedStatement 查询数据 (2) 使用 arrayList 集合

    创建 员工=类生成 有参构造 get set 方法 toString 方法 package cn.hph; public class emp1 { //创建员工类的属性 private int id; ...

随机推荐

  1. Could not execute action

    2.Could not execute action 原因:action成员变量有空值,要访问方法中,使用了该成员变量 参考: http://www.blogjava.net/javagrass/ar ...

  2. zabbix告警使用sendEmail

    1sendmail介绍 详细介绍见官网:http://caspian.dotconf.net/menu/Software/SendEmail/ 2使用sendEmail sendEmail是个十分优秀 ...

  3. bzoj4591 【Shoi2015】超能粒子炮·改

    由Lucas定理C(n,k)=C(n/2333,k/2333)*C(n%2333,k%2333)%2333 则ans=ΣC(n,i),(i<=k)  =C(n/2333,0)*C(n%2333, ...

  4. JS写小游戏(一):游戏框架

    前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 ...

  5. <<< html5本地储存

    类似与Cookies,但由于Cookies储存量太小,大小也只有4-5KB的样子,html5的本地储存能存5M大小的数据 html5本地储存属性有,localStorage和sessionStorag ...

  6. 使用VS2010创建WebService 发布、测试

    http://blog.sina.com.cn/s/blog_45eaa01a0102vopl.html 1 打开VS2010,菜单    文件->新建->项目 2 选择[ASP.net ...

  7. Google Maps API V3 之绘图库 信息窗口

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  8. asp rs开启关闭问题

    使用rs.close关闭后,可以直接用rs.open来打开数据表:如果用了set rs = nothing 从内存中清除rs对象,再次加载rs对象就需要使用set rs=server.createob ...

  9. ecshop 后台 审核功能

    有三个关键文件 html文件<img src="images/{if $vo.is_check}yes{else}no{/if}.gif" onclick="lis ...

  10. zabbix3.0.4 邮件告警详细配置

    sendEmail是一个轻量级,命令行的SMTP邮件客户端.如果你需要使用命令行发送邮件,那么sendEmail是非常完美的选择:使用简单并且功能强大.这个被设计用在php.bash perl和web ...