#php #mysql
#php #mysql
Вопрос:
У меня очень большой и неструктурированный скрипт.
В какой-то момент скрипта устанавливается подключение к БД.
Через некоторое время после этого мне нужно установить новое подключение к другой БД, выполнить запрос, а затем отключиться.
После того, как я сделаю это, мне нужно, чтобы все последующие вызовы mysql_query() использовали исходную ссылку на БД.
Я знаю, что могу получить идентификатор ссылки из первого mysql_connect() и использовать его во всех соответствующих вызовах mysql_query(), но я не хочу изменять больше кода, чем необходимо. Я хочу сделать что-то вроде этого:
//... loads of code ...
mysql_connect("original connection");
mysql_query(...); // don't want to modify these lines
//... loads more code ...
$link = get_current_mysql_link_identifier(); // imaginary function
$new_link = mysql_connect("my new connection");
mysql_query(...); // uses new connection
mysql_close($new_link);
reinstate_old_link($link); // imaginary function
//... loads more code ...
mysql_query(...) // line remains unchanged. uses original DB link
Без этих воображаемых функций, как только второе соединение закрывается, mysql_query() не использует исходное соединение по умолчанию; он продолжает пытаться использовать более свежее закрытое соединение.
Комментарии:
1. Я думаю, но я вполне могу ошибаться , что после закрытия второго соединения
mysql_
* функции будут работать со следующим доступным соединением, которое в данном случае было бы первым соединением.2. Не очень элегантное решение, но почему вы не подключаетесь повторно к первой базе данных после выполнения запросов к вторичной базе данных?
3. @Treffynnon Я провел несколько тестов, и, похоже, что он не возвращается к исходному вопросу после mysql_close()
4. @Raisen Это вариант, но я имею дело с действительно запутанным кодом, и я не уверен на 100%, откуда взялось соединение!
5. Вместо того, чтобы восстанавливать_old_link(), просто снова вызовите mysql_connect с исходными параметрами подключения. В документации говорится, что в этом случае существующее соединение будет использовано повторно…
Ответ №1:
mysql_connect()
возвращает ссылку на соединение, которую затем вы можете указать в других операторах, чтобы указать, какое соединение будет использоваться. Я полагаю, вам также необходимо указать new_link
аргумент для создания нового подключения.
Комментарии:
1. Привет, Джим. Цитируя мой первоначальный вопрос: «Я знаю, что могу получить идентификатор ссылки из первого mysql_connect() и использовать его во всех соответствующих вызовах mysql_query(), но я не хочу изменять больше кода, чем необходимо». Похоже, то, чего я хочу достичь, невозможно.