Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Соединение с двумя базами.
 
 автор: Minus   (21.04.2009 в 00:03)   письмо автору
 
 

Доброй ночи.
Подскажите как можно в одном php скрипте соединиться с двумя базами?

  Ответить  
 
 автор: Trianon   (21.04.2009 в 00:16)   письмо автору
 
   для: Minus   (21.04.2009 в 00:03)
 

1. Функция mysql_connect() возвращает дескриптор соединения.
2. В рамках даже одного соединения можно работать со всеми базами, доступными этому логину.

  Ответить  
 
 автор: Minus   (21.04.2009 в 00:25)   письмо автору
 
   для: Trianon   (21.04.2009 в 00:16)
 

Ну вот допустим у меня такой скриптик есть:

<?
$dbhost 
'localhost'
$dbuser 'user';
$dbpass '1234'
$dbname 'base';

$connect mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db($dbname,$connect);

/*Запрос на вывод информации из базы base*/

include("file2.php");

?>


Файл file2.php:


<?
$dbhost2 
'localhost'
$dbuser2 'user2';
$dbpass2 '12345'
$dbname2 'base2';

$connect mysql_connect($dbhost2,$dbuser2,$dbpass2); 
mysql_select_db($dbname2,$connect);

/*Запрос на вывод информации из базы base2*/

?>

как такое сделать?

  Ответить  
 
 автор: Trianon   (21.04.2009 в 00:46)   письмо автору
 
   для: Minus   (21.04.2009 в 00:25)
 

В чем сложности?

  Ответить  
 
 автор: Minus   (21.04.2009 в 00:47)   письмо автору
 
   для: Trianon   (21.04.2009 в 00:46)
 

Не понял смысл двух соединений с базами.

Вот вы писали:
"2. В рамках даже одного соединения можно работать со всеми базами, доступными этому логину.".
Это получается:
$connect = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$connect);

$connect2 = mysql_connect($dbhost2,$dbuser2,$dbpass2);
mysql_select_db($dbname2,$connect2);

так это все равно выдаст ошибку..

  Ответить  
 
 автор: Лерк   (21.04.2009 в 02:00)   письмо автору
 
   для: Minus   (21.04.2009 в 00:47)
 

Из этих функций за выбор базы отвечает только mysql_select_db().

<?php
$connect 
mysql_connect($dbhost,$dbuser,$dbpass); 
mysql_select_db('1st_database',$connect);
// тут работа с 1st_database

mysql_select_db('2nd_database',$connect);
// тут работа с 2nd_database

// и т.д.

  Ответить  
 
 автор: Trianon   (21.04.2009 в 02:59)   письмо автору
 
   для: Лерк   (21.04.2009 в 02:00)
 

На самом деле можно и проще :)

К примеру
INSERT INTO db2.table2 (f1, f2) SELECT f1, f2 FROM db1.table1

  Ответить  
 
 автор: Лерк   (21.04.2009 в 03:02)   письмо автору
 
   для: Trianon   (21.04.2009 в 02:59)
 

Да, тоже верно

  Ответить  
 
 автор: Minus   (21.04.2009 в 11:29)   письмо автору
 
   для: Trianon   (21.04.2009 в 02:59)
 

Спасибо! помогло :)

  Ответить  
 
 автор: Trianon   (21.04.2009 в 03:02)   письмо автору
 
   для: Minus   (21.04.2009 в 00:47)
 

>Вот вы писали:
>"2. В рамках даже одного соединения можно работать со всеми базами, доступными этому логину.".
>Это получается:
>$connect = mysql_connect($dbhost,$dbuser,$dbpass);
>mysql_select_db($dbname,$connect);
>
>$connect2 = mysql_connect($dbhost2,$dbuser2,$dbpass2);
>mysql_select_db($dbname2,$connect2);
>
>так это все равно выдаст ошибку..

Вполне адекватный код. Только всё же через два разных соединения.
И если далее во всех обращениях честно используются дескрипторы $connect и $connect2
(и соответствующие логины наделены правами к соответствующим базам),
то никаких специфических ошибок быть не должно.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования