更新数据库驱动类

增加各自的parseDsn方法
This commit is contained in:
ThinkPHP
2013-04-27 12:29:18 +08:00
parent 2c5b98888c
commit ee0b30ec6e
5 changed files with 608 additions and 548 deletions

View File

@@ -14,12 +14,28 @@ use Think\Db\Driver;
/** /**
* mysql数据库驱动 * mysql数据库驱动
* @category Extend
* @package Extend
* @subpackage Driver.Db
* @author liu21st <liu21st@gmail.com>
*/ */
class Mysql extends Driver{ class Mysql extends Driver{
/**
* 解析pdo连接的dsn信息
* @access public
* @param array $config 连接信息
* @return string
*/
protected function parseDsn($config){
$dsn = 'mysql:dbname='.$config['database'].';host='.$config['hostname'];
if(!empty($config['hostport'])) {
$dsn .= ';port='.$config['hostport'];
}elseif(!empty($config['socket'])){
$dsn .= ';unix_socket='.$config['socket'];
}
if(!empty($config['charset'])){
$dsn .= ';charset='.$config['charset'];
}
return $dsn;
}
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
* @access public * @access public

View File

@@ -14,16 +14,26 @@ use Think\Db\Driver;
/** /**
* Oracle数据库驱动 * Oracle数据库驱动
* @category Extend
* @package Extend
* @subpackage Driver.Db
* @author ZhangXuehun <zhangxuehun@sohu.com>
*/ */
class Oracle extends Driver{ class Oracle extends Driver{
private $table = ''; private $table = '';
protected $selectSql = 'SELECT * FROM (SELECT thinkphp.*, rownum AS numrow FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%) thinkphp ) %LIMIT%%COMMENT%'; protected $selectSql = 'SELECT * FROM (SELECT thinkphp.*, rownum AS numrow FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%) thinkphp ) %LIMIT%%COMMENT%';
/**
* 解析pdo连接的dsn信息
* @access public
* @param array $config 连接信息
* @return string
*/
protected function parseDsn($config){
$dsn = 'oci:dbname='.$config['database'];
if(!empty($config['charset'])) {
$dsn .= ';charset='.$config['charset'];
}
return $dsn;
}
/** /**
* 执行语句 * 执行语句
* @access public * @access public

View File

@@ -14,13 +14,23 @@ use Think\Db\Driver;
/** /**
* Pgsql数据库驱动 * Pgsql数据库驱动
* @category Extend
* @package Extend
* @subpackage Driver.Db
* @author liu21st <liu21st@gmail.com>
*/ */
class Pgsql extends Driver{ class Pgsql extends Driver{
/**
* 解析pdo连接的dsn信息
* @access public
* @param array $config 连接信息
* @return string
*/
protected function parseDsn($config){
$dsn = 'pgsql:dbname='.$config['database'].';host='.$config['hostname'];
if(!empty($config['hostport'])) {
$dsn .= ';port='.$config['hostport'];
}
return $dsn;
}
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
* @access public * @access public

View File

@@ -14,13 +14,20 @@ use Think\Db\Driver;
/** /**
* Sqlite数据库驱动 * Sqlite数据库驱动
* @category Extend
* @package Extend
* @subpackage Driver.Db
* @author liu21st <liu21st@gmail.com>
*/ */
class Sqlite extends Driver { class Sqlite extends Driver {
/**
* 解析pdo连接的dsn信息
* @access public
* @param array $config 连接信息
* @return string
*/
protected function parseDsn($config){
$dsn = 'sqlite:'.$config['database'];
return $dsn;
}
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
* @access public * @access public

View File

@@ -14,13 +14,30 @@ use Think\Db\Driver;
/** /**
* Sqlsrv数据库驱动 * Sqlsrv数据库驱动
* @category Extend
* @package Extend
* @subpackage Driver.Db
* @author liu21st <liu21st@gmail.com>
*/ */
class Sqlsrv extends Driver{ class Sqlsrv extends Driver{
protected $selectSql = 'SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER (%ORDER%) AS ROW_NUMBER FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%) AS thinkphp) AS T1 %LIMIT%%COMMENT%'; protected $selectSql = 'SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER (%ORDER%) AS ROW_NUMBER FROM (SELECT %DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%) AS thinkphp) AS T1 %LIMIT%%COMMENT%';
// PDO连接参数
protected $options = [
PDO::ATTR_CASE => PDO::CASE_LOWER,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::SQLSRV_ATTR_ENCODING => PDO::SQLSRV_ENCODING_UTF8,
];
/**
* 解析pdo连接的dsn信息
* @access public
* @param array $config 连接信息
* @return string
*/
protected function parseDsn($config){
$dsn = 'sqlsrv:dbname='.$config['database'].';Server='.$config['hostname'];
if(!empty($config['hostport'])) {
$dsn .= ','.$config['hostport'];
}
return $dsn;
}
/** /**
* 取得数据表的字段信息 * 取得数据表的字段信息
@@ -109,7 +126,7 @@ class Sqlsrv extends Driver{
.$this->parseWhere(!empty($options['where'])?$options['where']:'') .$this->parseWhere(!empty($options['where'])?$options['where']:'')
.$this->parseLock(isset($options['lock'])?$options['lock']:false) .$this->parseLock(isset($options['lock'])?$options['lock']:false)
.$this->parseComment(!empty($options['comment'])?$options['comment']:''); .$this->parseComment(!empty($options['comment'])?$options['comment']:'');
return $this->execute($sql); return $this->execute($sql,$this->parseBind(!empty($options['bind'])?$options['bind']:[]));
} }
/** /**
@@ -125,7 +142,7 @@ class Sqlsrv extends Driver{
.$this->parseWhere(!empty($options['where'])?$options['where']:'') .$this->parseWhere(!empty($options['where'])?$options['where']:'')
.$this->parseLock(isset($options['lock'])?$options['lock']:false) .$this->parseLock(isset($options['lock'])?$options['lock']:false)
.$this->parseComment(!empty($options['comment'])?$options['comment']:''); .$this->parseComment(!empty($options['comment'])?$options['comment']:'');
return $this->execute($sql); return $this->execute($sql,$this->parseBind(!empty($options['bind'])?$options['bind']:[]));
} }
} }