Глюк mssql_connect в php

Вчера напоролся на одну достаточно неприятную “особенность” функции mssql_connect - если создавать два соединения к разным базам данных, то работать с ними одновременно не возможно - оба хандлера указывают на последнее соединение, первое оказывается недоступным. Тоесть, необязательный параметр во всех mssql_ функциях просто игнорируется.. Пока не разобрался с чем это связано, но больше всего похоже на баг в пхп расширении, хотя не исключаю проблем с FreeTDS, которая используется для работы с сервером баз данных(работаю под операционкой Linux CentOS).

Единственным пока выходом для меня оказалась последовательная работа с базами - соединились с одной, выполнили запрос, соединились со второй, тоже запрос, потом опять коннект к первой и так далее… Не сильно удобно, но зато вполне работоспособно ;)

Посты по теме:

  • Пока что ничего не написано

3 Comments

  1. new_coder

    читать ман надо а потом людей пугать

    Если второй вызов функции произошёл с теми же аргументами mysql_connect(), новое соединение не будет установлено. Вместо этого функция вернёт ссылку на уже установленное соединение. Параметр new_link может заставить функцию mysql_connect() открыть ещё одно соединение, даже если соединение с аналогичными параметрами уже открыто. Параметр client_flags должен быть комбинацией из следующих констант: MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE, MYSQL_CLIENT_INTERACTIVE.

  2. hb

    у mssql_connect есть 4 аргумент $new_link.
    если он true, то функция создает новое sql соединение даже когда уже создано
    соединение к тому же серверу с теми юзером. иначе, по-умолчанию,
    mssql_connect вернет ссылку на уже созданное соединение с сервером.

    $sql1 = mssql_connect(’server’, ‘user’, ‘pass’);
    $sql2 = mssql_connect(’server’, ‘user’, ‘pass’); // $sql2 = $sql1
    $sql3 = mssql_connect(’server’, ‘user’, ‘pass’, true); //$sql3 - новое соединение к тому же серверу

  3. tolix

    2 hb:
    Спасибо большое за разьяснение, буду знать. Я действительно использовал подключения с одинаковыми параметрами.

Leave a Reply