Как подключиться к нескольким базам данных на одной странице PHP?

Возможный дубликат:
Как вы подключаетесь к нескольким базам данных MySQL на одной веб-странице?

Если я хочу подключиться к одному db, сделайте некоторый запрос, а затем выполните другой запрос из другого БД. Как мне это сделать? Я просто

mysql_pconnect("host:3306", "user", "password") or die(mysql_error()); mysql_select_db("Test") or die(mysql_error()); //do some query mysql_pconnect("host2:3306", "user", "password") or die(mysql_error()); mysql_select_db("Test") or die(mysql_error()); //do another query 

Так вы это делаете? Несколько вопросов. Заметьте, я использовал pconnect, это влияет на вызов его дважды на одной странице? Кроме того, мне нужно закрыть соединение для первого, прежде чем вызывать второй?

    Вам нужно сохранить ссылку на соединение с базой данных в отдельной переменной. Например

      $connection_1 = mysql_connect("host:3306", "user", "password") or die(mysql_error()); mysql_select_db("Test", $connection_1) or die(mysql_error()); $connection_2 = mysql_pconnect("host2:3306", "user", "password") or die(mysql_error()); mysql_select_db("Test", $connection_2) or die(mysql_error()); mysql_query("your query", $connection_1); // run query for first connection mysql_query("your query", $connection_2); // run query for second connection 

    Вам необходимо сохранить ресурс, возвращенный из mysql_connect, и использовать его при выполнении mysql_select_db.

     $res1 = mysql_pconnect(...); mysql_select_db("Test", $res1); $res2 = mysql_pconnect(...); mysql_select_db("Test", $res2); 

    Затем используйте $ res1 или $ res2 при запросе соответствующего db.

     mysql_query("select * from test_table", $res1); mysql_query("select * from test_table", $res2); 

    Так вы это делаете?

    Это оставит ваш скрипт с двумя открытыми соединениями с разными хостами до его завершения.

    Вы можете повторно использовать одно из этих соединений, снова вызвав mysql_pconnect .

    Заметьте, я использовал pconnect , это влияет на вызов его дважды на одной странице?

    Из документов :

    Сначала функция попытается найти (постоянную) ссылку, которая уже открыта с тем же хостом, именем пользователя и паролем

    Поскольку ваши хосты разные, будут два разных соединения

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

    Вы не можете явно закрыть соединение с помощью mysql_pconnect .

    Вы сделали RTM, правильно, потому что вы не используете $link_identifier ?

    http://us.php.net/mysql_select_db :

    bool mysql_select_db ( string $database_name [, resource $link_identifier ] )

    Устанавливает текущую активную базу данных на сервере, которая связана с указанным идентификатором ссылки. Каждый последующий вызов mysql_query () будет выполнен в активной базе данных.

    параметры

    database_name Имя базы данных, которая должна быть выбрана.

    link_identifier Соединение MySQL.

    Если идентификатор ссылки не указан, предполагается последняя ссылка, открытая mysql_connect (). Если такой ссылки не обнаружено, она попытается создать такую, как если бы mysql_connect () был вызван без аргументов. Если соединение не установлено или не установлено, генерируется ошибка уровня E_WARNING.

    Всякий раз, когда вы используете pconnect, вы делите соединение (не только на странице, но, возможно, на других страницах) – в вашем случае здесь не делайте этого. Вам нужны изолированные ссылки, поэтому отдельные транзакции. Вероятно, вы должны, вероятно, рассмотреть mysql_connect и явно использовать параметр new_link . Наконец, явно используйте $link_identifier , так что вы $link_identifier , к чему подключаетесь.