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

問題は $config ではなく $db の部分です。JFactory::getDbo()$db オブジェクト (おそらく によって作成された) を配列として脅かそうとしています。

それが何かに使用したい独自の変数である場合は、明らかに既存の $db オブジェクトとの競合を避けるために、別の名前に変更してみてください。

または、ここで説明されているように JDatabase クラスを使用します: http://docs.joomla.org/Accessing_the_database_using_JDatabase

于 2013-03-25T11:11:45.900 に答える
0

あなたのエラーメッセージは非常に明確です -$dbクラスのオブジェクトをJDatabaseMySQLi配列として使用しようとしています。次のように作成した場合$db:

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

Joomla! 用のデータベース コネクタobject(MySQLi adpater を使用) があります。ローカル データベースをインストールします (つまり、 内の 1 つのセットアップ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

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 に答える