Предупреждение: mysql_xx
функции устарели начиная с php 5.5 и удалены начиная с php 7.0 (см. Http://php.net/manual/intro.mysql.php ), используйте mysqli_xx
функции или посмотрите ответ ниже от @Troelskn
Вы можете сделать несколько вызовов mysql_connect()
, но если параметры одинаковы, вам нужно передать true для параметра ' $new_link
' (четвертый), в противном случае одно и то же соединение используется повторно. Например:
$dbh1 = mysql_connect($hostname, $username, $password);
$dbh2 = mysql_connect($hostname, $username, $password, true);
mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);
Затем для запроса базы данных 1 передайте первый идентификатор ссылки:
mysql_query('select * from tablename', $dbh1);
и для базы данных 2 передать второе:
mysql_query('select * from tablename', $dbh2);
Если вы не передаете идентификатор ссылки, то используется последнее созданное соединение (в данном случае это представлено $dbh2
), например:
mysql_query('select * from tablename');
Другие варианты
Если пользователь MySQL имеет доступ к обеим базам данных, и они находятся на одном и том же хосте (то есть обе базы данных доступны через одно и то же соединение), вы можете:
- Держите одно соединение открытым и при необходимости звоните
mysql_select_db()
для обмена. Я не уверен, что это чистое решение, и вы могли бы в конечном итоге запросить неправильную базу данных.
- Укажите имя базы данных, когда вы ссылаетесь на таблицы в своих запросах (например
SELECT * FROM database2.tablename
). Это, вероятно, будет проблемой для реализации.
Также, пожалуйста, прочитайте ответ troelskn, потому что это лучший подход, если вы можете использовать PDO, а не старые расширения.
$dbh2
для второго только при необходимости? Необходимость изменить все запросы для этого подхода к работе, вероятно, займет несколько дней, просто чтобы найти их все ...db_query($query,$db='db1')
а затем массово обновить все ваши старые запросы, чтобыdb_query($query)
затем выполнить пользовательское обновление ваших нестандартных запросов доdb_query($query,'db2')
If the link identifier is not specified, the last link opened by mysql_connect() is assumed.
Если вы используете PHP5 (и вы должны, учитывая, что PHP4 устарел), вы должны использовать PDO , поскольку это постепенно становится новым стандартом. Одно (очень) важное преимущество PDO заключается в том, что он поддерживает связанные параметры, что делает код более безопасным.
Вы бы подключились через PDO, вот так:
(Конечно, замените имя базы данных, имя пользователя и пароль выше)
Затем вы можете запросить базу данных следующим образом:
Или, если у вас есть переменные:
Если вам нужно открыть несколько соединений одновременно, вы можете просто создать несколько экземпляров PDO:
источник
use DATABASENAME
, но я не вижу смысла?Я просто сделал мою жизнь простой:
надеюсь, что это полезно ... ура ...
источник
Вместо mysql_connect используйте mysqli_connect .
MySQL предоставляет функциональность для подключения нескольких баз данных одновременно.
источник
mysql_connect
Попробуйте код ниже:
Вы можете получить данные вышеупомянутого запроса из обеих баз данных, как показано ниже
источник
mysql_select_db
даже один раз - кроме того, дважды вызывать их без посредников - бесполезноЭто наиболее очевидное решение, которое я использую, но только помните: если имя пользователя и пароль для обеих баз данных совпадают на одном и том же хосте, это решение всегда будет использовать первое соединение. Так что не смущайтесь, что это не работает в таком случае. Что вам нужно сделать, это создать 2 разных пользователей для 2 баз данных, и это будет работать.
источник
Если вам действительно не нужно иметь более одного экземпляра объекта PDO в игре, учтите следующее:
Обратите внимание на отсутствие
dbname=
в конструкции аргументов.Когда вы подключаетесь к MySQL через терминал или другой инструмент, имя базы данных не требуется. Вы можете переключаться между базами данных, используя
USE dbname
оператор черезPDO::exec()
метод.Конечно, вы можете захотеть заключить это в инструкцию catch.
источник
Возможно, вы сможете использовать синтаксис MySQLi, который позволит вам лучше справляться с этим.
Определите соединения с базой данных, затем, когда вы захотите запросить одну из баз данных, укажите правильное соединение.
Например:
Затем, чтобы запросить их на той же странице, используйте что-то вроде:
Таким образом, переход на MySQLi поможет вам.
источник
Вам на самом деле не нужно
select_db
. Вы можете отправить запрос в две базы данных одновременно. Во- первых, дать грант ,DB1
чтобы выбрать изDB2
путемGRANT select ON DB2.* TO DB1@localhost;
. ТогдаFLUSH PRIVILEGES;
. Наконец, вы можете выполнять «запросы к нескольким базам данных», какSELECT DB1.TABLE1.id, DB2.TABLE1.username FROM DB1,DB2
и т. Д. (Не забывайте, что вам нужен доступ «root» для использования команды grant)источник
если вы используете mysqli и имеете два файла db_connection. как первый
второй
ТАК просто измените имя параметра pass в mysqli, как DB1 и DB2. если вы передадите один и тот же параметр в mysqli, предположим, что DB1 в обоих файлах, вторая база данных больше не будет подключаться. Так что помните, когда вы используете два или более соединения, передайте другое имя параметра в функцию mysqli
источник
источник