[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с несколькими БД
Vasilii
Добрый день.

Есть потребность в работе с несколькими БД MySQL.

Принцип работы примерно такой.
Подключаюсь к БД "А", на которой работают скрипты, авторизация и прочее.
Потом мне нужно подключиться к БД "Б".
Сравнить некоторые данные из БД "А" и из БД "Б", составить запрос на корректировку данных в БД "Б" и обновить данные в БД "Б", после чего сохранить информацию об успешном выполнении в БД "А". То есть мне многократно нужно переключаться от одной БД к другой в процессе выполнения скрипта. Как это делать правильно?

И второй вопрос по этой же теме.
Дело в том, что изначально код не был рассчитан на такое, в начале скрипта осуществлялось подключение к БД и все запросы выполнялись собственной функцией QUERY($sql), принимающей один параметр - запрос.

И всё это происходило в статических методах, также не принимающих параметров.

Т.е.

class a
{
function b()
{
$result = QUERY($sql);
}
}


Теперь чтобы "пробросить" в коде второй параметр "идентификатор соединения", нужно перелопатить весь код, это капец, просто нереально.

Какие у меня есть варианты? Может создать некий класс, со статическими переменными, хранящими идентификатор, мне бы в идеале подошло сделать вторую функцию QUERY_2($sql), которая будет выполнять запросы ко второй БД.

Т.е., чтобы было так:
QUERY($sql); - запрос к БД "А"
QUERY_2($sql); - запрос к БД "Б"
И попеременно их использовать, не перебирая весь движок...

Это возможно?
Спасибо!
bestxp
А что тебе мешает держать 2 подключения одновременно? Не ну серьезно,
Vasilii
Цитата (bestxp @ 9.03.2019 - 14:31)
А что тебе мешает держать 2 подключения одновременно? Не ну серьезно,

Ничего не мешает, но и не чего не даёт мне два подключения... Я же написал кусочек кода, сейчас распишу понятнее


class a
{
function b()
{
// подключено к БД "А" по умолчанию
$result = QUERY($sql);
// теперь подключаюсь ко второй, к БД "Б"
mysql_connect( ... ); // БД "Б"
mysql_select_db( ... ); // БД "Б"

// а к первому подключению я уже не могу обратиться, нужно заново подключаться к БД, так как метод b класса a не может принять параметр.


mysql_connect( ... ); // БД "А"
mysql_select_db( ... ); // БД "А"
}
}



Вот повторного переподключения к БД "А" я и хотел избежать. Ладно, это ерунда, не переписывать же весь проект из-за нескольких лишних подключений к БД в одном-двух методах...
Эли4ка
Ну mysql уже не поддерживается это раз.
Во-вторых,
$connection = new mysqli($host, $username, $password, $database);

Ничего не говорит такой код?
Эли4ка
А для вашего случая пример с Оф. сайта:
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* проверяем соединение */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

/* возвращаем имя текущей базы данных */
if ($result = $mysqli->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
printf("Default database is %s.\n", $row[0]);
$result->close();
}

/* изменяем текущую базу данных на world */
$mysqli->select_db("world");

/* возвращаем имя текущей базы данных */
if ($result = $mysqli->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
printf("Default database is %s.\n", $row[0]);
$result->close();
}

$mysqli->close();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.