Как подключиться к внешней базе данных в joomla
Если в разрабатываемом расширении для joomla вам требуется доступ к таблицам в одной базе данных, созданной при инсталляции joomla, то вы можете просто использовать JFactory->getDBO метод. При этом используя уже установленное соединение с базой данных Joomla, которое используется для подключения. Например вот так:
- <?php
- $db = JFactory::getDBO();
- ?>
После этого $db будет содержать объект типа JDatabase, и вы можете выполнять операции с базой данных используя стандартные методы joomla для работы с базой данных.
Но что если вы хотите подключиться к внешней базе данных в joomla?. Это может быть другая база данных на том же сервере, что и ваша база данных установки Joomla! Или это может быть база данных абсолютно на другом удаленном хосте, и для соединения с ней возможно даже потребуется другой драйвер базы данных. Реализовать такое соединение к удаленной базе данных в joomla, возможно при использовании метода JDatabase->getInstance, как в примере ниже:
- <?php
- $option['driver'] = 'mysql'; // Имя драйвера удаленной базы данных
- $option['host'] = 'mysql.host.com'; // Имя сервера удаленной базы данных
- $option['user'] = 'user_name'; // Имя пользователя учетной записи удаленной базы данных
- $option['password'] = 'sjy6j6t8y'; // Пароль доступа учетной записи к удаленной базе данных
- $option['database'] = 'db_name'; // Имя удаленной базы данных
- $option['prefix'] = 'pref_'; // Префикс таблиц удаленной базы данных (может быть пустым)
- $db = & JDatabase::getInstance($option);
- ?>
После этого $db как и в первом случае будет содержать объект типа JDatabase, и вы также можете выполнять операции с базой данных используя стандартные методы joomla для работы с базой данных.
Заметим, что если база данных использует нестандартный номер порта, то это может быть указано, добавив его в конце имени хоста. Например, ваша база данных MySQL использует порт 3307 (по умолчанию используется порт 3306), в этом случае имя хоста может быть "mysql.host.com: 3307".
Одной из особенностей использования JDatabase::getInstance является то, что если еще одно соединение сделано с теми же параметрами, он вернет ранее созданный объект, и не будет создавать новый.
Однако следует отметить, что параметры должны в точности совпадать, чтобы это произошло. Например, если два соединения были сделаны с базой данных MySQL с использованием JDatabase::getInstance, при первом использовании имени хоста "mysql.host.com", а второе с помощью "mysql.host.com: 3306", то будут сделаны два отдельных соединения, несмотря на то, что порт 3306 является портом по умолчанию для MySQL и остальные параметры указанные в option соединения являются одинаковыми.
PS. Читайте последние записи RSS Подписка на RSS

Комментарии
Конечно можно, в этой статье приведен этот пример, используя его вы можете использовать любую внешнюю\сторонн юю базу данных в любых расширениях для Joomla 1.5