Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Подключение дополнительной БД в дополнении к основной базе ?


Recommended Posts

Всем доброго!

 

Вопрос как правильно подключить еще одну базу в OC 2.3 ? База самодельная, на том же хостинге. 

Интересует именно техническая сторона вопроса. В типовом варианте есть класс db (файл db.php в library)

Если я сделаю новый файл db2.php и пропишу дополнительные константы для подключения, то в коде 

везде смогу так-же обращаться к этому классу по типу $this->db2->query 

и запрос уже будет выполнятся к второй базе верно ?

 

Ничего нигде больше не нужно будет править/добавлять ?

 

Просто кто уже может делал такое и какие грабли там всплыли где-то ?

 

Всем Спасибо!

Надіслати
Поділитися на інших сайтах


3 минуты назад, AlexandrStep сказал:

Если я сделаю новый файл db2.php

Вы плохо читаете код зачем еще отдельній класс?

$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2, DB_PORT2);
 

Надіслати
Поділитися на інших сайтах

28 минут назад, AlexandrStep сказал:

Всем доброго!

 

Вопрос как правильно подключить еще одну базу в OC 2.3 ? База самодельная, на том же хостинге. 

Интересует именно техническая сторона вопроса. В типовом варианте есть класс db (файл db.php в library)

Если я сделаю новый файл db2.php и пропишу дополнительные константы для подключения, то в коде 

везде смогу так-же обращаться к этому классу по типу $this->db2->query 

и запрос уже будет выполнятся к второй базе верно ?

 

Ничего нигде больше не нужно будет править/добавлять ?

 

Просто кто уже может делал такое и какие грабли там всплыли где-то ?

 

Всем Спасибо!

 

Да сможете, но вам предварительно необходимо поместить ващ объект $db2 в  $registry, для того чтобы к нему был доступ из дочерних классов движка.

Надіслати
Поділитися на інших сайтах


28 минут назад, chukcha сказал:

Вы плохо читаете код зачем еще отдельній класс?

$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2, DB_PORT2);
 

 

Спасибо большое , да я не силен в этом только учусь) 

То есть это прописать в том же файле db.php или же объявлять в каждом модуле где мне нужен будет

доступ ко 2-ой БД ? 

 

 

Надіслати
Поділитися на інших сайтах


Все понял в файле framework.php

 

есть строки 

// Database
if ($config->get('db_autostart')) {
	$registry->set('db', new DB($config->get('db_type'), $config->get('db_hostname'), $config->get('db_username'), $config->get('db_password'), $config->get('db_database'), $config->get('db_port')));
}

 

Просто нужно продублировать этот регистер сет с своими параметрами для второй базы и потом использовать его!

 

Всем спасибо!

Надіслати
Поділитися на інших сайтах


46 минут назад, AlexandrStep сказал:

Вопрос как правильно подключить еще одну базу в OC 2.3 ? База самодельная, на том же хостинге. 

Интересует именно техническая сторона вопроса. В типовом варианте есть класс db (файл db.php в library)

Если я сделаю новый файл db2.php и пропишу дополнительные константы для подключения, то в коде 

везде смогу так-же обращаться к этому классу по типу $this->db2->query 

и запрос уже будет выполнятся к второй базе верно ?

 

чтоб обратиться к таблице второй базы, то просто добавить в запрос имя этой базы, например:

$query = $this->db->query("SELECT * FROM `".$base."`.`".DB_PREFIX.$tabl."`");
return $query->rows;
//$base - ваша база
//$tabl - ваша таблица

 

Надіслати
Поділитися на інших сайтах

38 минут назад, vier сказал:

, то просто добавить в запрос имя этой базы,

Если пользователю доступны две базы

Надіслати
Поділитися на інших сайтах

42 минуты назад, vier сказал:

 

чтоб обратиться к таблице второй базы, то просто добавить в запрос имя этой базы, например:


$query = $this->db->query("SELECT * FROM `".$base."`.`".DB_PREFIX.$tabl."`");
return $query->rows;
//$base - ваша база
//$tabl - ваша таблица

 

 

Хм... а там логин/пароль/роли другие, наверное не прокатит такой вариант... щас попробую!) Спс!

Надіслати
Поділитися на інших сайтах


2 минуты назад, AlexandrStep сказал:

 

Хм... а там логин/пароль/роли другие, наверное не прокатит такой вариант... щас попробую!) Спс!

- заходить под теми же доступами, что прописывается в конфиге для основной базы

Надіслати
Поділитися на інших сайтах

1 час назад, vier сказал:

 

чтоб обратиться к таблице второй базы, то просто добавить в запрос имя этой базы, например:


$query = $this->db->query("SELECT * FROM `".$base."`.`".DB_PREFIX.$tabl."`");
return $query->rows;
//$base - ваша база
//$tabl - ваша таблица

 

 

ООП - не не слышал.

Это совет почти как. Если вам нужны данные из базы. Вставьте код в tpl.

Надіслати
Поділитися на інших сайтах


35 минут назад, Yoda сказал:

 

ООП - не не слышал.

Это совет почти как. Если вам нужны данные из базы. Вставьте код в tpl.

 

при чем здесь код (файл) tpl - других мыслей нет?

для удобства разве нельзя в модели это сделать:

public function myFun() {
	$base = 'new_base';
	$tabl = 'tabl_vasa';
	$query = $this->db->query("SELECT * FROM `".$base."`.`".DB_PREFIX.$tabl."`");
	return $query->rows;
}

 

Надіслати
Поділитися на інших сайтах

2 часа назад, Yoda сказал:

 

ООП - не не слышал.

Это совет почти как. Если вам нужны данные из базы. Вставьте код в tpl.

 

Ну человек предложил вариант, что бы не городить дополнительные огороды и при условиях доступности базы/ролей его вариант тоже имеет право быть!

В любом случае всем большое спасибо! Одна голова хорошо, а форум лучше!)

Надіслати
Поділитися на інших сайтах


Все зависит не от огород а от пространства

Если вам, например нужна синхронизация между таблицами баз
SELECT * FROM BASE.product pB
LEFT JOIN BASE2.product pB2 ON pB.product_id = pB2.product_id
WHERE pB2.product_id is NULL

то тогда владелец баз должен быть один

А если, на пример
$last_id = $this->db->getLastId();
$this->db2->query('UPDATE WHERE $last_id)

то тут владельцы могут быть разные

Надіслати
Поділитися на інших сайтах

Только что, vier сказал:

всегда нужно идти по пути наименьшего сопротивления )

Надо идти по пути максимальной безопасности

например одной записи есть права на SELECT
а другой - полный доступ.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.