Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

24.04.2009, 12:58
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
Соединение с базой.
Люди, подскажите пожалуйста. Есть скрипт, который работает с базой, примерно так:
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 остается, и все запросы которые идут ниже долбятся туда.
Как можно реализовать тихое, скромное, никому не мешающее соединение, и соответственно вывод переменной? =)
|
|
|

24.04.2009, 13:43
|
|
Новичок
Регистрация: 06.02.2009
Сообщений: 10
Провел на форуме: 98658
Репутация:
9
|
|
OdaN, попробуй сделать так (на случай, если соединение не закрыватеся), но это врядли:
PHP код:
$in = @mysql_connect($server2, $user2, $pass2);
@mysql_select_db($db2);
// ...
mysql_close($in);
Пробуй:
Убери функцию get_var_db2(), и пробуй без неё... Она вообще тебе нужна?
Также могут быть ошибки у тебя в запросах, выложи сюда...
|
|
|

24.04.2009, 14:39
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
нет, в запросах нету ошибок,
PHP код:
$in = @mysql_connect($server2, $user2, $pass2);
@mysql_select_db($db2);
// ...
mysql_close($in);
так закрывать соединение тоже пробовал, болт, всеравно все что ниже долбится во вторую базу.
Без функции оно закрывает и первое, и второе соединение =) и по дефолту пытается долбится в локалхост.
|
|
|

24.04.2009, 14:43
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
return $var;
mysql_close(); }
поменяй местами, потому что после return происходит выход из функции и mysql_close() уже не работает (пропускается), т.е. правильно так:
mysql_close()
return $var;
return, если он один, всегда самый последний (в твоём случае)
http://ru.php.net/return
Последний раз редактировалось Pashkela; 24.04.2009 в 14:47..
|
|
|

24.04.2009, 15:02
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
пофк =) при вызове функции выдает
Код:
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..
|
|
|

24.04.2009, 17:14
|
|
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);
Поэтому второй параметр лучше указывать всегда и везде, ибо последний дескриптор он и будет последним, не важно вызван ли он в другой области видимости или нет
|
|
|

25.04.2009, 14:21
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
Gifts, спасибо =)
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|