下面类借助单例模式在Yii中实现访问多个数据库:
View Code
1 <?php 2 3 /* 4 * 访问多个MySQL数据库 5 * @Author: jinhuawang76 6 * @Date: 2013/1/12 7 */ 8 9 /** 10 * Description of MySQLInstance 11 * 12 * @author Administrator 13 */ 14 class MySQLInstance { 15 16 private static $_instance; 17 private $con; // mysql数据库连接 18 19 /** 20 * 私有化构造函数,防止外界实例化对象 21 */ 22 23 private function __construct() { 24 25 } 26 27 /** 28 * 私有化克隆函数,防止外界克隆对象 29 */ 30 private function __clone() { 31 32 } 33 34 static function instance() { 35 if (!self::$_instance) { 36 self::$_instance = new self(); 37 } 38 return self::$_instance; 39 } 40 41 /** 42 * 初始化连接MySQL数据库 43 * return 0 表示成功,否则返回错误字符串 44 * @param type $user 45 * @param type $password 46 * @param type $host 47 * @param type $port 48 */ 49 function init($user, $password, $db, $host = null, $port = null) { 50 $server = "127.0.0.1"; 51 if ($host != null) { 52 $server = $host; 53 } 54 if ($port != null) { 55 $server .= ':' . $port; 56 } 57 58 $this->con = mysql_connect($server, $user, $password); 59 if (!$this->con) { 60 return false; 61 } 62 63 if (!mysql_select_db($db, $this->con)) { 64 return false; 65 } 66 67 return true; 68 } 69 70 /** 71 * 执行mysql_query,返回数组 72 * @param type $sql 73 */ 74 public function runQuery($sql) { 75 if ($this->con == null) { 76 return null; 77 } 78 mysql_query("SET NAMES UTF8"); 79 $rs = mysql_query($sql, $this->con); 80 if (!$rs) { 81 return null; 82 } 83 $ret = array(); 84 while ($row = mysql_fetch_array($rs)) { 85 $ret[] = $row; 86 } 87 mysql_free_result($rs); 88 return $ret; 89 } 90 91 function __destruct() { 92 if ($this->con != null) { 93 mysql_close($this->con); 94 } 95 } 96 97 } 98 99 ?>