php 单例类 mysql pdo_PHP PDO类 单例

$pdo=array("mysql:host=localhost;dbname=demo;charset=utf8","root","");

//开始连接数据库

$db = Mysql::newClass();

$db->pdoConnect($pdo);

$updateRow = array(

"user_id" => "2",

"meta_key" => "username"

);

//$db->select("wp_usermeta"); //发送sql

//$result=$db->selectOne(); //获取一条数据

//$db->selectCount(); //获取全部

//$db->update("wp_usermeta",$updateRow,"umeta_id=1"); //更新信息

//$db->insert("wp_usermeta",$updateRow); //插入数据

//echo $db->lastinsertid(); //获取插入后的id

//$db->delete("wp_usermeta","umeta_id>18"); //删除数据*/

classMysql

{private static $object;private$PDO;private$prepare;/单例模式 start

privatefunction __construct()

{

}public staticfunction newClass()

{if(!(self::$objectinstanceof self))

{

self::$object = newself;

}return self::$object;

}publicfunction __clone(){

trigger_error('Clone is not allow!',E_USER_ERROR);

}//单例模式 end

//连接pdo

publicfunction pdoConnect($address)

{try{

$this->PDO = new PDO($address[0],$address[1],$address[2]);

$this->PDO->setAttribute(PDO::ATTR_PERSISTENT,true);//设置抛出错误

$this->PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置当字符串为空时转换为sql的null

$this->PDO->setAttribute(PDO::ATTR_ORACLE_NULLS,true);//由MySQL完成变量的转义处理

$this->PDO->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

}catch(PDOException $e)

{

$this->Msg("PDO连接错误信息:".$e->getMessage());

}

}//错误提示

private function Msg($the_error=""){

$html="

mysql error
$the_error

";

echo $html;

exit;

}/**

* insert,delete,update操作

*

**/

publicfunction insert($table,$row)

{

$sql=$this->sqlCreate("insert",$table,$row);

$result= $this->sqlExec($sql);

}public function update($table,$row,$where)

{

$sql=$this->sqlCreate("update",$table,$row,$where);

$result= $this->sqlExec($sql);

}public function delete($table,$where)

{

$sql=$this->sqlCreate("delete",$table,"",$where);

$result= $this->sqlExec($sql);

}//服务与insert,update,delete,生成sql

private function sqlCreate($action,$table,$row="",$where="")

{

$actionArr=array("insert" => "insert into","update" => "update","delete" => "delete from");

$row= empty($row) ? "": $this->rowCreate($row);

$where = empty($where) ? "":"where".$where;

$sql= $actionArr[$action].$table.$row.$where;return$sql;

}//拼成row

privatefunction rowCreate($row)

{

$sql_row="set";foreach($row as $key=>$val)

{

$sql_row.=" ".$key."='".$val."',";

}return trim($sql_row,",");

}//执行sql,返还影响行数

privatefunction sqlExec($sql)

{try{

$result=$this->PDO->exec($sql);

}catch(PDOException $e)

{

$this->Msg($e->getMessage());

}return$result;

}//获取insert插入的id

publicfunction lastinsertid()

{return $this->PDO->lastinsertid();

}/**

* select 部分

**/

public function select($table,$fields="", $where="",$orderby="", $sort="",$limit="")

{

$fields= empty($fields) ? "*":$fields;

$sqlSelect=$this->sqlCreateSelect($table,$fields,$where,$orderby,$sort,$limit);

$this->query($sqlSelect,$where);

}//生成select sql

private function sqlCreateSelect($table,$fields="*", $where="",$orderby="", $sort="",$limit="")

{

$whereSql= empty($where)? "1=1":$this->whereCreate($where);

$orderbySql= empty($orderby)? "":"order by".$orderby." ".$sort;

$limitSql= empty($limit)? "":"limit".$limit;

$sql="select $fields from $table where".$whereSql.$orderbySql.$limitSql;return$sql;

}private function whereCreate($where)

{

$whereSql="";foreach($where as $key=>$val)

{

$whereSql.=" ".$key."=:".$key."and";

}return $whereSql."1=1";

}//执行select sql

private function query($sql,$where)

{try{

$this->prepare = $this->PDO->prepare($sql);

}catch(PDOException $e)

{

$this->Msg("预处理sql出错信息:".$e->getMessage()."
sql:(".$sql.")");

}

empty($where)? "":$this->bind($where);

$this->prepare ->execute();

}private function bind($where)

{foreach($where as $key=>$val)

{

$this->prepare->bindValue(":".$key,$val);

}

}/*select获取数据*/

//获取一条

publicfunction selectOne()

{

$result=$this->prepare->fetch(PDO::FETCH_ASSOC);return$result;

}//获取全部数据

publicfunction selectAll()

{

$result=$this->prepare->fetchAll(PDO::FETCH_ASSOC);return$result;

}//获取查询记录数

publicfunction selectCount()

{

$total= $this->prepare->rowCount();return$total;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值