mysql 单例模式_使用单例模式实现mysql类

defined('ACC')||exit('Access Denied');

// 封装mysql操作类,包括连接功能,及查询功能.

class mysql extends absdb{

protected static $ins = null;

protected $host; // 主机名

protected $user; // 用户名

protected $passwd; // 密码

protected $db; // 数据库名

protected $port; // 端口

protected $conn = null;

// 在内部操作,获得一个对象

public static function getIns() {

if(self::$ins === null) {

self::$ins = new self();

}

$conf = conf::getIns();

self::$ins->host = $conf->host;

self::$ins->user = $conf->user;

self::$ins->passwd = $conf->pwd;

self::$ins->db = $conf->db;

self::$ins->port = $conf->port;

self::$ins->connect();

self::$ins->select_db();

self::$ins->setChar();

return self::$ins;

}

// 不让外部做new操作,

protected function __construct() {

}

// 连接数据库

public function connect() {

$this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port);

if(!$this->conn) {

$error = new Exception('数据库连不上',9);

throw $error;

}

}

// 发送sql查询

public function query($sql) {

$rs = mysql_query($sql,$this->conn);

if(!$rs) {

log::write($sql);

}

return $rs;

}

// 封装一个getAll方法

// 参数:$sql

// 返回: array,false

public function getAll($sql) {

$rs = $this->query($sql);

if(!$rs) {

return false;

}

$list = array();

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

$list[] = $row;

}

return $list;

}

// 封装一个getRow方法

// 参数:$sql

// 返回: array,false

public function getRow($sql) {

$rs = $this->query($sql);

if(!$rs) {

return false;

}

return mysql_fetch_assoc($rs);

}

// 封装一个getOne方法,

// 参数: $sql

// 返回: int,str(单一的值)

public function getOne($sql) {

$rs = $this->query($sql);

if(!$rs) {

return false;

}

$tmp = mysql_fetch_row($rs);

return $tmp[0];

}

// 封装一个afftect_rows()方法

// 参数:无

// 返回 int 受影响行数

public function affected_rows() {

return mysql_affected_rows($this->conn);

}

// 返回最新生成的auto_increment列的值

public function last_id() {

return mysql_insert_id($this->conn);

}

// 选库函数

public function select_db() {

$sql = 'use ' . $this->db;

return $this->query($sql);

}

// 设置字符集的函数

public function setChar() {

$sql = 'set names utf8';

return $this->query($sql);

}

// 自动生成insert语句,update语句并执行

public function autoExecute($data,$table,$act='insert',$where='') {

if($act == 'insert') {

$sql = 'insert into ' . $table . ' (';

$sql .= implode(',',(array_keys($data)));

$sql .= ') values (\'';

$sql .= implode("','",array_values($data));

$sql .= "')";

} else if($act == 'update') {

if(!trim($where)) {

return false;

}

$sql = 'update ' . $table . ' set ';

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

$sql .= $k;

$sql .= '=';

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

}

$sql = substr($sql,0,-1);

$sql .= ' where ';

$sql .= $where;

} else {

return false;

}

//return $sql;

return $this->query($sql);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值