PHP基于单例模式实现的mysql类
本文实例讲述了PHP基于单例模式实现的mysql类。分享给大家供大家参考,具体如下:
<?php
defined('ACC')||exit('AccessDenied');
//封装mysql操作类,包括连接功能,及查询功能.
classmysqlextendsabsdb{
protectedstatic$ins=null;
protected$host;//主机名
protected$user;//用户名
protected$passwd;//密码
protected$db;//数据库名
protected$port;//端口
protected$conn=null;
//在内部操作,获得一个对象
publicstaticfunctiongetIns(){
if(self::$ins===null){
self::$ins=newself();
}
$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();
returnself::$ins;
}
//不让外部做new操作,
protectedfunction__construct(){
}
//连接数据库
publicfunctionconnect(){
$this->conn=@mysql_connect($this->host,$this->user,$this->passwd,$this->port);
if(!$this->conn){
$error=newException('数据库连不上',9);
throw$error;
}
}
//发送sql查询
publicfunctionquery($sql){
$rs=mysql_query($sql,$this->conn);
if(!$rs){
log::write($sql);
}
return$rs;
}
//封装一个getAll方法
//参数:$sql
//返回:array,false
publicfunctiongetAll($sql){
$rs=$this->query($sql);
if(!$rs){
returnfalse;
}
$list=array();
while($row=mysql_fetch_assoc($rs)){
$list[]=$row;
}
return$list;
}
//封装一个getRow方法
//参数:$sql
//返回:array,false
publicfunctiongetRow($sql){
$rs=$this->query($sql);
if(!$rs){
returnfalse;
}
returnmysql_fetch_assoc($rs);
}
//封装一个getOne方法,
//参数:$sql
//返回:int,str(单一的值)
publicfunctiongetOne($sql){
$rs=$this->query($sql);
if(!$rs){
returnfalse;
}
$tmp=mysql_fetch_row($rs);
return$tmp[0];
}
//封装一个afftect_rows()方法
//参数:无
//返回int受影响行数
publicfunctionaffected_rows(){
returnmysql_affected_rows($this->conn);
}
//返回最新生成的auto_increment列的值
publicfunctionlast_id(){
returnmysql_insert_id($this->conn);
}
//选库函数
publicfunctionselect_db(){
$sql='use'.$this->db;
return$this->query($sql);
}
//设置字符集的函数
publicfunctionsetChar(){
$sql='setnamesutf8';
return$this->query($sql);
}
//自动生成insert语句,update语句并执行
publicfunctionautoExecute($data,$table,$act='insert',$where=''){
if($act=='insert'){
$sql='insertinto'.$table.'(';
$sql.=implode(',',(array_keys($data)));
$sql.=')values(\'';
$sql.=implode("','",array_values($data));
$sql.="')";
}elseif($act=='update'){
if(!trim($where)){
returnfalse;
}
$sql='update'.$table.'set';
foreach($dataas$k=>$v){
$sql.=$k;
$sql.='=';
$sql.="'".$v."',";
}
$sql=substr($sql,0,-1);
$sql.='where';
$sql.=$where;
}else{
returnfalse;
}
//return$sql;
return$this->query($sql);
}
}
更多关于PHP数据库操作相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《PHP基于pdo操作数据库技巧总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。