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 :: два mssql_connect и идентификатор

 PHP.SU

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


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

> Без описания
Alisandres
Отправлено: 07 Октября, 2013 - 15:43:42
Post Id



Новичок


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


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




Добрый день, есть непонятка.

Имею два соединения с базой данных:
PHP:
скопировать код в буфер обмена
  1.  
  2. $db_host_1 = 'host1';
  3. $db_name_1 = 'db1';
  4. $db_user_1 = 'user1';
  5. $db_passwd_1 = 'pass1';
  6. $db_connect_1 = mssql_connect($db_host_1, $db_user_1, $db_passwd_1) or die ("system_error". __LINE__ );
  7.  
  8. $db_host_2 = 'host2';
  9. $db_name_2 = 'db2';
  10. $db_user_2 = 'user2';
  11. $db_passwd_2 = 'pass2';
  12. $db_connect_2 = mssql_connect($db_host_2, $db_user_2, $db_passwd_2) or die ("system_error". __LINE__ );
  13.  


соответственно в скрипте вызываю так:
PHP:
скопировать код в буфер обмена
  1.  
  2. mssql_select_db($db_name_1, $db_connect_1) or die ("system_error". __LINE__ );
  3. $query = mssql_query("SELECT * FROM table_db_1", $db_connect_1) or die ("system_error". __LINE__ );
  4.  


но получаю ошибку, что базы данных db_host_1 не найдено. Оно и логично на сервере host2 оной нету, но я ведь использовал идентификатор и подключался к 1 серверу.
Понятно что идентификатор не сработал и он хапнул последний, т.е. от host2.
Вопрос, что не так?

(Отредактировано автором: 07 Октября, 2013 - 15:45:02)

 
 Top
Мелкий Супермодератор
Отправлено: 07 Октября, 2013 - 16:07:21
Post Id



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


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


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




Вы вот на этот момент не попадаете?
Цитата:
Если делается второй вызов mssql_connect() с теми же аргументами, новая ссылка не устанавливается, а возвращается идентификатор уже открытой ссылки.

Т.е. хост, юзер и пароль точно различаются?


-----
PostgreSQL DBA
 
 Top
caballero
Отправлено: 07 Октября, 2013 - 17:56:52
Post Id


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


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


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




для работы с mssql следует использовать майкрософтовское расширение для PHP: mssql Native Client
родное кривоватое. у меня например были проблеммы с кодировками


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Alisandres
Отправлено: 07 Октября, 2013 - 20:40:35
Post Id



Новичок


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


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




Мелкий пишет:
Вы вот на этот момент не попадаете?
Цитата:
Если делается второй вызов mssql_connect() с теми же аргументами, новая ссылка не устанавливается, а возвращается идентификатор уже открытой ссылки.

Т.е. хост, юзер и пароль точно различаются?


Хост различаться. Совпадает только user, он стандартный. В любом случае вызов идет с другим идентификатором.

caballero пишет:
для работы с mssql следует использовать майкрософтовское расширение для PHP: mssql Native Client. Родное кривоватое. у меня например были проблеммы с кодировками


Есть одно но, я использую Unix и Freedts. Видимо в Freetds какая то засада, покопаю, вы натолкнули меня на мысль.

(Отредактировано автором: 08 Октября, 2013 - 08:17:48)

 
 Top
Alisandres
Отправлено: 08 Октября, 2013 - 08:16:25
Post Id



Новичок


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


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




Подтверждаю догадку с FreeTDS

Открываем конфиг:
CODE (text):
скопировать код в буфер обмена
  1. nano /etc/freetds/freetds.conf


Правим:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. # A typical Microsoft server
  3. [egServerSQL1]
  4.         host = mssql.domain.net
  5.         port = 1433
  6.         tds version = 7.0
  7.  
  8. [egServerSQL2]
  9.         host = mssql2.domain.net
  10.         port = 1433
  11.         tds version = 7.0
  12.  


Перезапускаем Apache.
Profit!
 
 Top
Мелкий Супермодератор
Отправлено: 08 Октября, 2013 - 09:31:06
Post Id



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


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


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




Alisandres, удовлетворите моё любопытство - какие версии PHP, FreeTDS и MS SQL?


-----
PostgreSQL DBA
 
 Top
Alisandres
Отправлено: 08 Октября, 2013 - 09:57:56
Post Id



Новичок


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


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




Мелкий пишет:
Alisandres, удовлетворите моё любопытство - какие версии PHP, FreeTDS и MS SQL?


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB