这边主要是要实现一个新库的连接 , 然后用单例结合框架的Db类写了一个数据库连接
<?php
require_once (WEB_PATH . 'db/Db.cls.php');
/**
* @author jixiaolong
* BI数据库
* 只提供只读功能
*/
class BiDb {
private static $Instance = null;
private $DB = null;
/**
*
* @param array $master_arr
* @param array $slave_arr
*/
private function __construct() {
//BI数据库访问账号
$bi_link = array (
'db_host' => 'test',
'db_port' => 3306,
'db_user' => 'test',
'db_pass' => 'test',
'db_name' => 'test',
'new_link' => false
);
$this->DB = new Db ( $bi_link );
}
/**
*
*/
function __destruct() {
}
public static function getInstance() {
if (empty ( self::$Instance )) {
BiDb::$Instance = new BiDb ();
}
return BiDb::$DbInstance;
}
/**
* 单查
* @param string $sql SQL
*/
public function fetchOne($sql) {
return $this->DB->fetchOne ( $sql );
}
/**
* 多查
* @param string $table 表名
* @param string $fields 字段
* @param string $where_cond 查询条件
* @param string $pri 索引字段
*/
public function fetchList($table, $fields = '*', $where_cond = 1, $pri = '') {
$where_cond = $this->buildCond ( $where_cond );
$sql = 'SELECT ' . $fields . ' FROM `' . $table . '`' . $where_cond . '';
return $this->dFetchList ( $sql, $pri );
}
private function buildCond($where_cond) {
$where_cond = trim ( $where_cond );
if ($where_cond) {
if (strlen ( $where_cond ) > 5) {
$tmp = strtoupper ( substr ( $where_cond, 0, 6 ) );
if (! in_array ( $tmp, array (
'WHERE ',
'LIMIT ',
'GROUP ',
'ORDER '
) )) {
$where_cond = ' WHERE ' . $where_cond;
}
} else {
$where_cond = ' WHERE ' . $where_cond;
}
}
return $where_cond;
}
public function dFetchList($sql, $pri = "") {
$data_lists = array ();
$this->DB->query ( $sql );
if ($pri) {
$pri_arr = explode ( ',', $pri );
$count = count ( $pri_arr );
switch ($count) {
case 1 :
while ( $r = $this->DB->fetchArray () ) {
$data_lists [$r [$pri]] = $r;
}
break;
case 2 :
while ( $r = $this->DB->fetchArray () ) {
$data_lists [$r [$pri_arr [0]]] [$r [$pri_arr [1]]] = $r;
}
break;
case 3 :
while ( $r = $this->DB->fetchArray () ) {
if ($r [$pri_arr [2]]) {
$data_lists [$r [$pri_arr [0]]] [$r [$pri_arr [1]]] [$r [$pri_arr [2]]] = $r;
} else {
$data_lists [$r [$pri_arr [0]]] [$r [$pri_arr [1]]] [] = $r;
}
}
break;
case 4 :
while ( $r = $this->DB->fetchArray () ) {
$data_lists [$r [$pri_arr [0]]] [$r [$pri_arr [1]]] [$r [$pri_arr [2]]] [$r [$pri_arr [3]]] = $r;
}
break;
}
} else {
while ( $r = $this->DB->fetchArray () ) {
$data_lists [] = $r;
}
}
return $data_lists;
}
}