如何实例化动态表名的数据库连接

#1 GoolLong

我有个日志数据库,里面的表全是后台守护程序根据时间自动生成的,比如表名是 log_201101 。
我要在前台来处理这些表,是不可能先定义好model的,那么如何来初始化数据库连接呢?

2011-05-04 12:56:46

#2 jake

用spDB,不需要预先设置model

http://speedphp.com/database-spdb.html

2011-05-04 16:12:30

#3 GoolLong

但是用 spDB 就不能用 spPager 分页了。
研究了半天,找到一个解决方法:

1、定义model
class m_logdb extends spModel
{
    var $pk = "1";
    var $db = array(
                     'driver' => 'mysql',
                     'host' => 'localhost',
                     'port' => 3306,
                     'login' => 'user',
                     'password' => 'pwd',
                     'database' => 'logdb',
                    );

    public function __construct(){
        $db = spClass('db_mysql', array($this->db), SP_PATH.'/Drivers/mysql.php', TRUE);
        $this->_db = $db;
    }
}


2、在控制器里实例化并调用
$db = spClass("m_logdb");
$rows = $db->spPager($page, $page_size)->findSql("select * from log_201104");



实测没什么问题,不知道这样使用是否合适,有没有什么隐患或效率上的问题。

2011-05-04 20:01:44

#4 jake

这样做也是很好,符合mvc面向对象继承的方式。

2011-05-04 20:05:11

#5 vsxp

学习了。

2011-05-05 17:06:49