ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Соединение с базой.
  #1  
Старый 24.04.2009, 12:58
Аватар для OdaN
OdaN
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме:
473495

Репутация: 39
Отправить сообщение для OdaN с помощью ICQ
По умолчанию Соединение с базой.

Люди, подскажите пожалуйста. Есть скрипт, который работает с базой, примерно так:

PHP код:
$db="db";
$user="dbuser";
$pass='dbpass';
$server="db.site.com";
@
mysql_connect($server,  $user,  $pass);
@
mysql_select_db($db);

//много букав как мы берем из базы, показываем, вносим в базу, изменяем, и все остальное.... 
Дык вот стал вопрос:
Гдето посередине скрипта надо соединится к совсем другой базе, на совсем другом сервере. У меня получилось как-то так:

PHP код:
$db="db";
$user="dbuser";
$pass='dbpass';
$server="db.site.com";
@
mysql_connect($server,  $user,  $pass);
@
mysql_select_db($db);

//много букав как мы берем из базы, показываем, вносим в базу, изменяем, и все остальное....

function get_var_db2() {
$db2="db2";
$user2="dbuser2";
$pass2='dbpass2';
$server2="db2.site.com";

@
mysql_connect($server2,  $user2,  $pass2);
@
mysql_select_db($db2);

$var=mysql_result(mysql_query("select var from table"),0,"var");
return 
$var
mysql_close(); }

get_var_db2();

//много букав как мы берем из базы, показываем, вносим в базу, изменяем, и все остальное....
echo $var;
//много букав как мы берем из базы, показываем, вносим в базу, изменяем, и все остальное.... 
И собственно трабл в том, что после выполнения функции подключение к db2 остается, и все запросы которые идут ниже долбятся туда.
Как можно реализовать тихое, скромное, никому не мешающее соединение, и соответственно вывод переменной? =)
 
Ответить с цитированием

  #2  
Старый 24.04.2009, 13:43
Аватар для RESPECТ
RESPECТ
Новичок
Регистрация: 06.02.2009
Сообщений: 10
Провел на форуме:
98658

Репутация: 9
По умолчанию

OdaN, попробуй сделать так (на случай, если соединение не закрыватеся), но это врядли:
PHP код:
$in = @mysql_connect($server2,  $user2,  $pass2); 
@
mysql_select_db($db2);
// ...
mysql_close($in); 
Пробуй:
Убери функцию get_var_db2(), и пробуй без неё... Она вообще тебе нужна?

Также могут быть ошибки у тебя в запросах, выложи сюда...
 
Ответить с цитированием

  #3  
Старый 24.04.2009, 14:39
Аватар для OdaN
OdaN
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме:
473495

Репутация: 39
Отправить сообщение для OdaN с помощью ICQ
По умолчанию

нет, в запросах нету ошибок,
PHP код:
$in = @mysql_connect($server2,  $user2,  $pass2);  
@
mysql_select_db($db2); 
// ... 
mysql_close($in); 
так закрывать соединение тоже пробовал, болт, всеравно все что ниже долбится во вторую базу.
Без функции оно закрывает и первое, и второе соединение =) и по дефолту пытается долбится в локалхост.
 
Ответить с цитированием

  #4  
Старый 24.04.2009, 14:43
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

return $var;
mysql_close(); }

поменяй местами, потому что после return происходит выход из функции и mysql_close() уже не работает (пропускается), т.е. правильно так:

mysql_close()
return $var;

return, если он один, всегда самый последний (в твоём случае)

http://ru.php.net/return

Последний раз редактировалось Pashkela; 24.04.2009 в 14:47..
 
Ответить с цитированием

  #5  
Старый 24.04.2009, 15:02
Аватар для OdaN
OdaN
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме:
473495

Репутация: 39
Отправить сообщение для OdaN с помощью ICQ
По умолчанию

пофк =) при вызове функции выдает
Код:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO) in /patch/index.php on line 678

678 строчка - это следующее после функции обращение к базе. поидее должно идти к первой базе, конфиг которой указан выше вызова функции...

Последний раз редактировалось OdaN; 24.04.2009 в 15:08..
 
Ответить с цитированием

  #6  
Старый 24.04.2009, 17:14
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

OdaN Читайте маны по функциям, которые используете, там ВСЕ написано. http://ru2.php.net/mysql_query
Код:
 resource mysql_query  ( string $query  [, resource $link_identifier  ] )

link_identifier

    The MySQL connection. If the link identifier is not specified, 
the last link opened by mysql_connect() is assumed. If no such link
 is found, it will try to create one as if mysql_connect() was called
 with no arguments. If by chance no connection is found or
 established, an E_WARNING level error is generated.
Аналогично для mysql_select_db

Как пример
PHP код:
$lnk1=mysql_connect(тра-та-та первое соединение);
mysql_select_db('таблица',$lnk1);
$lnk2=mysql_connect(второе соединение);
mysql_select_db('sssss',$lnk2); 
Поэтому второй параметр лучше указывать всегда и везде, ибо последний дескриптор он и будет последним, не важно вызван ли он в другой области видимости или нет
 
Ответить с цитированием

  #7  
Старый 25.04.2009, 14:21
Аватар для OdaN
OdaN
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме:
473495

Репутация: 39
Отправить сообщение для OdaN с помощью ICQ
По умолчанию

Gifts, спасибо =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение на Perl web-интерфейса c базой данных Oracle VaTTka Статьи 2 21.12.2008 18:23
Настройка роутера на соединение с инетом hajikov Администрирование 3 08.12.2008 17:34
Firewall: принцип работы D=P=CH= MOD= Защита ОС: вирусы, антивирусы, файрволы. 0 02.10.2006 22:36
МТС не будет вводить плату за соединение dinar_007 Новости мира "железа" 2 08.09.2006 00:59
Проникновение через фаервол используя поддельные Ftp-команды rent0n Чужие Статьи 1 02.04.2006 11:47



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ