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
Форумы портала PHP.SU :: Версия для печати :: два mssql_connect и идентификатор
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » два mssql_connect и идентификатор

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

1. Alisandres - 07 Октября, 2013 - 15:43:42 - перейти к сообщению
Добрый день, есть непонятка.

Имею два соединения с базой данных:
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.
Вопрос, что не так?
2. Мелкий - 07 Октября, 2013 - 16:07:21 - перейти к сообщению
Вы вот на этот момент не попадаете?
Цитата:
Если делается второй вызов mssql_connect() с теми же аргументами, новая ссылка не устанавливается, а возвращается идентификатор уже открытой ссылки.

Т.е. хост, юзер и пароль точно различаются?
3. caballero - 07 Октября, 2013 - 17:56:52 - перейти к сообщению
для работы с mssql следует использовать майкрософтовское расширение для PHP: mssql Native Client
родное кривоватое. у меня например были проблеммы с кодировками
4. Alisandres - 07 Октября, 2013 - 20:40:35 - перейти к сообщению
Мелкий пишет:
Вы вот на этот момент не попадаете?
Цитата:
Если делается второй вызов mssql_connect() с теми же аргументами, новая ссылка не устанавливается, а возвращается идентификатор уже открытой ссылки.

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


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

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


Есть одно но, я использую Unix и Freedts. Видимо в Freetds какая то засада, покопаю, вы натолкнули меня на мысль.
5. Alisandres - 08 Октября, 2013 - 08:16:25 - перейти к сообщению
Подтверждаю догадку с 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!
6. Мелкий - 08 Октября, 2013 - 09:31:06 - перейти к сообщению
Alisandres, удовлетворите моё любопытство - какие версии PHP, FreeTDS и MS SQL?
7. Alisandres - 08 Октября, 2013 - 09:57:56 - перейти к сообщению
Мелкий пишет:
Alisandres, удовлетворите моё любопытство - какие версии PHP, FreeTDS и MS SQL?


Более подробно записал в свой блокнот (не сочтите за рекламу, она мне не нужна!)

 

Powered by ExBB FM 1.0 RC1