如果你访问joomla的安装数据库,可以简单采用JFactory::getDBO 方法,这样就可以使用已经建立好的Joomla数据库的连接,就像这个例子一样:
<?php
$db = JFactory::getDBO();
?>
采用以上方法得到的$db是一个 JDatabase的实例,你可以执行数据库操作。
可是如果你需要访问的数据不在Joomla使用的数据库中,怎样访问外部数据库哪?这个数据库可能是同一台机器上的不同数据库,或者根本就不在同一台服务器上,甚至可能不是mysql数据库而需要其他的数据库驱动。
你可以通过JDatabase::getInstance方法而达到你的目的。
下面是一个连接外部数据库的例子
Connecting to an external database
<?php
$option['driver'] = 'mysql'; // 数据库驱动
$option['host'] = 'db.myhost.com'; // 数据库所在的主机
$option['user'] = 'fredbloggs'; // 用户
$option['password'] = 's9****'; // 密码
$option['database'] = 'bigdatabase'; // 数据库名字
$option['prefix'] = 'abc_'; // 数据库前缀(可以为空)
$db = & JDatabase::getInstance( $option );
?>
现在得到的$db是一个 JDatabase的实例,你可以执行通常的数据库操作。
要注意的是,如果数据库用了一个非标准的端口,你可以通过在主机名添加来指定,例如,如果你的mysql数据库在3307端口运行,那么你这样指定 ‘db.myhost.com:3307’.
这样做的一个好处是如果参数相同,再次调用JDatabase::getInstance将得到前次已经生成的JDatabase的实例,而不是新生成一个。
但是,参数必须完全相同。比如,如果你一次调用主机名是‘db.myhost.com’,而另一次调用是‘db.myhost.com:3306’,那么这时候将产生两个不同的JDatabase的实例,即使这两个主机实际上是相同的。