PDO封装问题。
网上载了一个PDO的Mysql封装。怎么看都觉得有点问题啊。小弟以前学JAVA的,刚刚接触PHP。代码如下:
<?php
/**
* 数据库PDO操作
*/
class MysqlPdo {
public static $PDOStatement = null;
/**
* 数据库的连接参数配置
* @var array
* @access public
*/
public static $config = array ();
/**
* 是否使用永久连接
* @var bool
* @access public
*/
public static $pconnect = false;
/**
* 错误信息
* @var string
* @access public
*/
public static $error = '';
/**
* 单件模式,保存Pdo类唯一实例,数据库的连接资源
* @var object
* @access public
*/
protected static $link;
/**
* 是否已经连接数据库
* @var bool
* @access public
*/
public static $connected = false;
/**
* 数据库版本
* @var string
* @access public
*/
public static $dbVersion = null;
/**
* 当前SQL语句
* @var string
* @access public
*/
public static $queryStr = '';
/**
* 最后插入记录的ID
* @var integer
* @access public
*/
public static $lastInsertId = null;
/**
* 返回影响记录数
* @var integer
* @access public
*/
public static $numRows = 0;
// 事务指令数
public static $transTimes = 0;
/**
* 构造函数,
* @param $dbconfig 数据库连接相关信息,array('ServerName', 'UserName', 'Password', 'DefaultDb', 'DB_Port', 'DB_TYPE')
*/
public function __construct($dbConfig = '') {
if (! class_exists ( 'PDO' ))
throw_exception ( "不支持:PDO" );
//若没有传输任何参数,则使用默认的数据定义
if (! is_array ( $dbConfig )) {
$dbConfig = array ('hostname' => DB_HOST, 'username' => DB_USER, 'password' => DB_PWD, 'database' => DB_NAME, 'hostport' => DB_PORT, 'dbms' => DB_TYPE, 'dsn' => DB_TYPE . ":host=" . DB_HOST . ";dbname=" . DB_NAME );
}
if (empty ( $dbConfig ['hostname'] ))
throw_exception ( "没有定义数据库配置" );
self::$config = $dbConfig; //将传入的配置参数,传给Static变量。
if (empty ( self::$config ['params'] )) //???????????????????
self::$config ['params'] = array ();
/*************************************华丽分隔线*******************************************/
if (! isset ( self::$link )) {
$configs = self::$config; //复制一份配置信息。
if (self::$pconnect) {
$configs ['params'] [constant ( 'PDO::ATTR_PERSISTENT' )] = true;
}
try {
self::$link = new PDO ( $configs ['dsn'], $configs ['username'], $configs ['password'], $configs ['params'] );
} catch ( PDOException $e ) {
throw_exception ( $e->getMessage () );
//exit('连接失败:'.$e->getMessage());
}
if (! self::$link) {
throw_exception ( 'PDO CONNECT ERROR' );
return false;
}
self::$link->exec ( 'SET NAMES ' . DB_CHARSET );
self::$dbVersion = self::$link->getAttribute ( constant ( "PDO::ATTR_SERVER_INFO" ) );
// 标记连接成功
self::$connected = true;
// 注销数据库连接配置信息
unset ( $configs );
}
return self::$link;
}
/**
* 释放查询结果
* @access function
*/
static function free() {
self::$PDOStatement = null;
}
/*********************************************************************************************************/
/* 数据库操作 */
/*********************************************************************************************************/
/**
* 获得所有的查询数据
* @access function
* @return array
*/
static function getAll($sql = null) {
self::query ( $sql );
//返回数据集
$result = self::$PDOStatement->fetchAll ( constant ( 'PDO::FETCH_ASSOC' ) );
return $result;
}
/**
* 获得一条查询结果
* @access function
* @param string $sql SQL指令
* @param integer $seek 指针位置
* @return array
*/
static function getRow($sql = null) {