php mysql pdo 操作类_php mysql pdo操作类

classpdomysql {public static $dbtype = 'mysql';public static $dbhost = '';public static $dbport = '';public static $dbname = '';public static $dbuser = '';public static $dbpass = '';public static $charset = '';public static $stmt = null;public static $DB = null;public static $connect = true; //是否长连接

public static $debug = false;private static $parms = array();/**

* 构造函数*/

public function__construct() {

self:: $dbtype = 'mysql';

self:: $dbhost =HOST;

self:: $dbport = '3306';

self:: $dbname = 'tion';

self:: $dbuser = 'manager';

self:: $dbpass = '123';

self:: $connect = true;

self:: $charset = 'UTF8';

self::connect ();

self:: $DB -> setAttribute (PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY, true);

self:: $DB -> setAttribute (PDO :: ATTR_EMULATE_PREPARES, true);

self:: execute ('SET NAMES ' . self :: $charset);

}/**

* 析构函数*/

public function__destruct() {

self::close ();

}/**

* *******************基本方法开始*********************/

/**

* 作用:连接数据库*/

public functionconnect() {try{

self:: $DB = new PDO (self :: $dbtype . ':host=' . self :: $dbhost . ';port=' . self :: $dbport . ';dbname=' . self :: $dbname, self :: $dbuser, self :: $dbpass, array(

PDO:: ATTR_PERSISTENT => self :: $connect));

}catch (PDOException $e) {die ("Connect Error Infomation:" . $e ->getMessage ());

}

}/**

* 关闭数据连接*/

public functionclose() {

self:: $DB = null;

}/**

* 对字符串进行转义*/

public function quote($str) {return self :: $DB -> quote ($str);

}/**

* 作用:获取数据表里的列表

*返回:表字段结构

*类型:数组*/

public function getFields($table) {

self:: $stmt = self :: $DB -> query ("DESCRIBE $table");$result = self :: $stmt -> fetchAll (PDO ::FETCH_ASSOC);

self:: $stmt = null;return $result;

}/**

* 作用:获得最后INSERT的主鍵ID

* 返回:最后INSERT的主鍵ID

* 类型:数字*/

public functiongetLastId() {return self :: $DB ->lastInsertId ();

}/**

* 作用:执行INSERT\UPDATE\DELETE

* 返回:执行语句影响行数

* 类型:数字*/

public function execute($sql) {

self:: getPDOError ($sql);return self :: $DB -> exec ($sql);

}/**

* 获取要操作的数据

* 返回:合并后的SQL语句

* 类型:字串*/

private function getCode($table, $args) {$code = '';if (is_array ($args)) {foreach ($args as $k => $v) {if ($v == '') {continue;

}$code .= "`$k`='$v',";

}

}$code = substr ($code, 0, - 1);return $code;

}public function optimizeTable($table) {$sql = "OPTIMIZE TABLE $table";

self:: execute ($sql);

}/**

* 执行具体SQL操作

* 返回:运行结果

* 类型:数组*/

private function _fetch($sql, $type) {$result = array();

self:: $stmt = self :: $DB -> query ($sql);

self:: getPDOError ($sql);

self:: $stmt -> setFetchMode (PDO ::FETCH_ASSOC);switch ($type) {case '0' :

$result = self :: $stmt ->fetch ();break;case '1' :

$result = self :: $stmt ->fetchAll ();break;case '2' :

$result = self :: $stmt ->rowCount ();break;

}

self:: $stmt = null;return $result;

}/**

* *******************基本方法結束*********************/

/**

* *******************Sql操作方法开始*********************/

/**

* 作用:插入数据

* 返回:表內記录

* 类型:数组

* 參数:$db->insert('$table',array('title'=>'Zxsv'))*/

public function add($table, $args) {$sql = "INSERT INTO `$table` SET ";$code = self :: getCode ($table, $args);$sql .= $code;return self :: execute ($sql);

}/**

* 修改数据

* 返回:记录数

* 类型:数字

* 參数:$db->update($table,array('title'=>'Zxsv'),array('id'=>'1'),$where

* ='id=3');*/

public function update($table, $args, $where) {$code = self :: getCode ($table, $args);$sql = "UPDATE `$table` SET ";$sql .= $code;$sql .= " Where $where";return self :: execute ($sql);

}/**

* 作用:刪除数据

* 返回:表內记录

* 类型:数组

* 參数:$db->delete($table,$condition = null,$where ='id=3')*/

public function delete($table, $where) {$sql = "DELETE FROM `$table` Where $where";return self :: execute ($sql);

}/**

* 作用:获取单行数据

* 返回:表內第一条记录

* 类型:数组

* 參数:$db->fetOne($table,$condition = null,$field = '*',$where ='')*/

public function fetOne($table, $field = '*', $where = false) {$sql = "SELECT {$field} FROM `{$table}`";$sql .= ($where) ? " WHERE $where" : '';return self :: _fetch ($sql, $type = '0');

}/**

* 作用:获取所有数据

* 返回:表內记录

* 类型:二维数组

* 參数:$db->fetAll('$table',$condition = '',$field = '*',$orderby = '',$limit

* = '',$where='')*/

public function fetAll($table, $field = '*', $orderby = false, $where = false) {$sql = "SELECT {$field} FROM `{$table}`";$sql .= ($where) ? " WHERE $where" : '';$sql .= ($orderby) ? " ORDER BY $orderby" : '';return self :: _fetch ($sql, $type = '1');

}/**

* 作用:获取单行数据

* 返回:表內第一条记录

* 类型:数组

* 參数:select * from table where id='1'*/

public function getOne($sql) {return self :: _fetch ($sql, $type = '0');

}/**

* 作用:获取所有数据

* 返回:表內记录

* 类型:二维数组

* 參数:select * from table*/

public function getAll($sql) {return self :: _fetch ($sql, $type = '1');

}/**

* 作用:获取首行首列数据

* 返回:首行首列列表值

* 类型:值

* 參数:select `a` from table where id='1'*/

public function scalar($sql, $fieldname) {$row = self :: _fetch ($sql, $type = '0');return $row [$fieldname];

}/**

* 获取记录总数

* 返回:记录数

* 类型:数字

* 參数:$db->fetRow('$table',$condition = '',$where ='');*/

public function fetRowCount($table, $field = '*', $where = false) {$sql = "SELECT COUNT({$field}) AS num FROM $table";$sql .= ($where) ? " WHERE $where" : '';return self :: _fetch ($sql, $type = '0');

}/**

* 获取记录总数

* 返回:记录数

* 类型:数字

* 參数:select count(*) from table*/

public function getRowCount($sql) {return self :: _fetch ($sql, $type = '2');

}/**

* *******************Sql操作方法結束*********************/

/**

* *******************错误处理开始*********************/

/**

* 设置是否为调试模式*/

public function setDebugMode($mode = true) {return ($mode == true) ? self :: $debug = true : self :: $debug = false;

}/**

* 捕获PDO错误信息

* 返回:出错信息

* 类型:字串*/

private function getPDOError($sql) {

self:: $debug ? self :: errorfile ($sql) : '';if (self :: $DB -> errorCode () != '00000') {$info = (self :: $stmt) ? self :: $stmt -> errorInfo () : self :: $DB ->errorInfo ();echo (self :: sqlError ('mySQL Query Error', $info [2], $sql));exit();

}

}private function getSTMTError($sql) {

self:: $debug ? self :: errorfile ($sql) : '';if (self :: $stmt -> errorCode () != '00000') {$info = (self :: $stmt) ? self :: $stmt -> errorInfo () : self :: $DB ->errorInfo ();echo (self :: sqlError ('mySQL Query Error', $info [2], $sql));exit();

}

}/**

* 寫入错误日志*/

private function errorfile($sql) {echo $sql . '
';$errorfile = _ROOT . './dberrorlog.php';$sql = str_replace (array ("\n",

"\r",

"\t",

" ",

" ",

" "), array (" ",

" ",

" ",

" ",

" ",

" "), $sql);if (! file_exists ($errorfile)) {$fp = file_put_contents ($errorfile, "<?php exit('Access Denied');

?>\n" . $sql);

}else{$fp = file_put_contents ($errorfile, "\n" . $sql,FILE_APPEND);

}

}/**

* 作用:运行错误信息

* 返回:运行错误信息和SQL語句

* 类型:字符*/

private function sqlError($message = '', $info = '', $sql = '') {$html = '';if ($message) {$html .= $message;

}if ($info) {$html .= 'SQLID: ' . $info;

}if ($sql) {$html .= 'ErrorSQL: ' . $sql;

}throw new Exception($html);

}/**

* *******************错误处理结束*********************/}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值