接口
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. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

  2. JAVA之IO流(字节流)

    输入和输出 JAVA的流分为输入流和输出流两部分, 输入流:InputStream或者Reader:从文件中读到程序中: 输出流:OutputStream或者Writer:从程序中输出到文件中: Re ...

  3. nodejs中exports与module.exports的区别

    转自--http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html 你肯定非常熟悉nodejs模块中的exports对象,你可以用它创 ...

  4. UnixC学习小结

    1.malloc工作原理:     malloc使用一个数据结构(链表)维护分配空间     链表的构成:分配的空间/上一个空间数据/下一个空间/空间大小等信息.     对malloc分配的空间不要 ...

  5. NGUI 滑动与点击事件冲突处理

    弄一个既能滑动,又能点击的Scroll View.发现弄完后不能拖动了~ 因为点击事件需要Box Collider覆盖掉了Drag Scroll View的Box Collider.注意是Drag S ...

  6. phpexcel导入数据提示失败

    phpexcel导入excel时明明只有几行数据,却提示506行失败,原来是excel中有506行"无效数据"(看起来是空的,但是和没有数据不一样).

  7. php.ini 中文注释

    这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为 ; ´php.ini´.PHP 将在这些地方依次查找该文件:当前工作目录:环境变量PHPRC ; 指明的路径:编译时指定的 ...

  8. IO

    文件过滤 http://codego.net/9245/ C# 文件处理 http://wenku.baidu.com/link?url=yXKiIA_OZYR4MIynDgz-qhOnfJoCyOQ ...

  9. sicp-py

    第一章 在第一章中,我们专注于计算过程,以及程序设计中函数的作用.我们看到了如何使用原始数据(数值)和原始操作(算术运算),如何通过组合和控制来形成复合函数,以及如何通过给予过程名称来创建函数抽象.我 ...

  10. flash_header.S ( freescale imx6 board)

    /* * Copyright (C) 2011-2012 Freescale Semiconductor, Inc. * * This program is free software; you ca ...