0

我需要创建 Joomla 数据库配置的自定义数组,所以我这样做:

$config =& JFactory::getConfig();
$db['default']['hostname'] = $config->getValue('config.host');

但得到一个错误:Fatal error: Cannot use object of type JDatabaseMySQLi as array in /Sites/joomla/administrator/components/com_***** on line 217

我也试过这样:

die(var_dump($config->getValue('config.host')));
//string(9) "localhost"

$temp_var = $config->getValue('config.host');
die(var_dump($temp_var));
//string(9) "localhost"
4

3 回答 3

0

在 Joomla 3.0 中

您可以像这样获取每个值:

$config = JFactory::getConfig();
$db['default']['hostname'] = $config->get('host');
// Show them
var_dump($config);
var_dump($config->get('host'));
var_dump($db);
于 2013-03-25T10:13:50.683 回答
0

您的错误消息非常清楚 - 您正在尝试使用和调用$db类的对象JDatabaseMySQLi作为数组。如果您创建$db如下:

$db = JFactory::getDBO();
// N.B. $db is already setup for the Joomla! database.

您有 Joomla! 的数据库连接器object(使用 MySQLi 适配器)!安装本地数据库(即您的一个设置configuration.php)。这不是array- 但您的代码行正试图将其用作array

$db['default']['hostname'] = $config->getValue('config.host');

注意:上面这行是错误的

如果您想使用存储在您(例如远程数据库)中的凭据以外的凭据设置与数据库的连接,configuration.php则可以使用以下方法:

$options = array(
    'host'      => 'remote_host',
    'user'      => 'remote_user',
    'password'  => 'remote_password',
    'database'  => 'remote_name',
    'prefix'    => 'remote_table_prefix',
);

$rDBC = JDatabase::getInstance($options);
于 2013-03-25T12:12:58.027 回答
0

问题是 $db 部分,而不是 $config。您正试图将 $db 对象(可能由创建JFactory::getDbo())作为数组进行威胁。

如果这是您要用于某事的自己的变量,请尝试将其重命名为其他变量以避免与显然已经存在的 $db 对象发生冲突。

或使用此处描述的 JDatabase 类:http: //docs.joomla.org/Accessing_the_database_using_JDatabase

于 2013-03-25T11:11:45.900 回答