本帖最后由 dld11111 于 2010-06-17 16:47:15 编辑

解决方案 »

  1.   

    目录问题在配置文件里配置就行,至于连接数据库就将不同的资源链接惊醒__sleep and __wakeup解决或者存到$_SESSION里都可以的
      

  2.   

    1,可以的
    2。四个数据,如果每个域名只调用一个库,那include下个一个DB类一次即可,在里分逻辑。如果一个域外要用到四个数据库。这个不知道大家是如何解决的?架构如何设计?
      

  3.   

    还一种方法sQL指定数据库和表跨数据库查询时,有这么一个问题,可能会更改select_db,即默认数据库,这个有没有好办法?所以,分别声明四个也可能是最佳的。期待更好办法?
      

  4.   

     可是用select_db会不会出现并发操作错误的问题?
      

  5.   

    我以前遇到过这个问题,
    当换另一个数据库时,他更改了默认数据库,所以后面的的查询全出错,解决办法是表前加数据库名,不能select_db。
      

  6.   

    嵌入文件中
    $db = new Db_class(...,$dbname);调用文件中
    $dbname = '数据库名';
    include '嵌入文件';
    ...
      

  7.   

    第二个可以做个工厂模式 再配合单例模式
    简单的说就是做一个方法,这个方法会返回一个db的实例,根据传入的参数的不同返回不同的数据库连接实例。
    再配合上单例模式,即同一个数据库的连接就返回同一个连接。
    大致如下:配置信息可以考虑写在外面的config文件里面,在这里再载入进来class FtyMsDb{
    private static $MsDb = null;
    //数据库前缀
    private static $MsDbPriv = "UFDATA_";
    //数据库对应配置信息信息
    private static $MsSqlServerInfo = array(
    '121_2010'=>array('host'=>'localhost','user'=>'sa','pw'=>''),
    '122_2010'=>array('host'=>'localhost','user'=>'sa','pw'=>'')
    );

    /**
     * 获取一个Ms数据库连接
     *
     * @param unknown_type $type
     * @return MsDb
     */
    public static function GetMsDb($type){
    if(self::$MsDb[$type]!==null){
    return self::$MsDb[$type];
    }
    $MsServerinfo = self::$MsSqlServerInfo[$type];
    if(empty($MsServerinfo)){
    return null;
    }
    $MsDb = new MsDb();
    if($MsDb->New_connect($MsServerinfo['host'],$MsServerinfo['user'],$MsServerinfo['pw'],self::$MsDbPriv.$type)===false){
    return null;
    }
    self::$MsDb[$type] = $MsDb;
    return $MsDb;
    }

    /**
     * 根据传入的MsSql连接数据生成一个新的MsSql数据库连接
     *
     * @param 连接标识 $Name
     * @param 数据库地址 $Host
     * @param 用户名 $User
     * @param 密码 $Password
     * @param 连接数据库名 $DbName
     * @return MsDb
     */
    public static function GetNewMsDb($Name,$Host,$User,$Password,$DbName){
    if(self::$MsDb[$Name]!==null){
    return self::$MsDb[$Name];
    }
    $MsDb = new MsDb();
    if($MsDb->New_connect($Host,$User,$Password,$DbName)===false){
    return null;
    }
    self::$MsDb[$type] = $MsDb;
    return $MsDb;
    }
    }