Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: открыто два конекта к мускулу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Bios
Отправлено: 02 Декабря, 2009 - 00:23:31
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Добрый вечер всем

столкнулся с такой проблемкой =(

PHP:
скопировать код в буфер обмена
  1.  
  2. $cfg['web']=array("localhost","root","root","web");
  3. $cfg['game']=array("localhost","root","root","game");
  4.  
  5. function connect($con){
  6.         if($con=="game"){
  7.                 $ip=$cfg['game'][0];
  8.                 $user=$cfg['game'][2];
  9.                 $pass=$cfg['game'][3];
  10.                 $base=$cfg['game'][4];
  11.         }elseif($con=="web"){
  12.                 $ip=$cfg['web'][0];
  13.                 $user=$cfg['web'][2];
  14.                 $pass=$cfg['web'][3];
  15.                 $base=$cfg['web'][4];
  16.         }
  17.         $mysql = mysql_connect($ip,$user,$pass);
  18.         $base = mysql_select_db($base,$mysql);
  19.         $sql = @mysql_query("SET NAMES cp1251",$mysql);
  20.         return $mysql;
  21. }
  22. function reload(){
  23.         $qconnect = connect(game);
  24.         $online = mysql_query("SELECT COUNT(*) FROM characters WHERE online='1'",$qconnect);
  25.         $endonline = mysql_fetch_array($online);
  26.         return $endonline[0];
  27. }
  28.  
  29. $connect = connect(web);
  30. $get_time = mysql_query("SELECT * FROM web_cache WHERE cache_id='1'",$connect);
  31. if(mysql_num_rows($get_time)>=1){
  32.         $newonline = reload();
  33.         $up = mysql_query("UPDATE web_cache SET cache_online='".$newonline."' WHERE id='1'",$connect);
  34.         mysql_close();
  35. }


вот ошибка:
Table 'game.web_cache' doesn't exist

но таблица web_cache находится в базе web а не game
тоисть происходит переконнект к базе и первый коннект пропадает =(

и вот не знаю что и делать =(
как сделать что бы первый конект не пропадал

пробывал в функции reload() ставить mysql_close($qconnect); но закрывает все конекты =(

кто что посоветует сделать ?

(Отредактировано автором: 02 Декабря, 2009 - 00:24:44)

 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Декабря, 2009 - 01:18:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Все таблицы в одну базу.
 
 Top
Phantik
Отправлено: 02 Декабря, 2009 - 10:26:22
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




Проверить правильно ли отрабатывает mysql_select_db() перед запросом и к одной и к другой БД. Правильное ли значение $base в него передается?

Я в твоем коде не разбирался, но зачем тебе 2 конекта? Делай 1 конект, а перед каждым запросом вызывай mysql_select_db() с нужным именем базы.

(Отредактировано автором: 02 Декабря, 2009 - 10:28:28)

 
 Top
EuGen Администратор
Отправлено: 02 Декабря, 2009 - 10:35:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Есть еще вариант указывать полный путь к таблице/полю:
`db`.`table`.`field`
но это "горб" - лучше исправить архитектуру.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
movEAX
Отправлено: 02 Декабря, 2009 - 14:09:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Да все очень просто, надо лишь использовать mysqli ))

PHP:
скопировать код в буфер обмена
  1. $dbGame  = new mysqli(......);
  2. $dbWeb  = new mysqli(......);


ps: mysqli работает гораздо быстрее.

(Отредактировано автором: 02 Декабря, 2009 - 14:10:21)



-----
армия.. самое убогое место
 
 Top
Мелкий Супермодератор
Отправлено: 02 Декабря, 2009 - 15:20:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Bios, внимательнее с индексами массивов:
array("localhost","root","root","game"); - индексы 0-3.
А вы обращаетесь ещё к 4, вместо пароля присваиваете имя базы, а имени базы вообще в массиве нету.


-----
PostgreSQL DBA
 
 Top
Bios
Отправлено: 02 Декабря, 2009 - 15:51:40
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




та то не то вписал =)
сделал вот так

$connect = @mysql_connect($ip,$login,$pass,true);

добавил true после пароля ,так я могу открывать другие коннекты
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB