URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 982
[ Назад ]

Исходное сообщение
"Подключение к Microsoft SQL!"

Отправлено Вячеслав , 26-Дек-02 17:32 
Уважаемый All.
Подскажите как на PHP или Perl работать с базой данных  Microsoft SQL, если это возможно!Или подскажите где можно почитать доку по этому поводу!Очень нужно делать выбоки с базы! Или может можно как-то с  Microsoft SQL в MySQL конвертить данные...или другие какие-нибудь извращения....надо позарез....
Заранее очень благодарен!

Содержание

Сообщения в этом обсуждении
"RE: Подключение к Microsoft SQL!"
Отправлено Vinivor , 26-Дек-02 19:05 
>Подскажите как на PHP или Perl работать с базой данных  Microsoft
>SQL, если это возможно!Или подскажите где можно почитать доку по этому
>поводу!Очень нужно делать выбоки с базы! Или может можно как-то с
> Microsoft SQL в MySQL конвертить данные...или другие какие-нибудь извращения....надо позарез....

Я бы посоветовал поставить на PHP библиотечку ADODB. Она работает с большинством популярных баз (и с MS SQL), причем переход с одной на другую очень прост - исходники менять не надо, надо поменять только настройки ADODB. Да и работает библиотечка быстрее всех мне известных.

см. здесь: http://php.weblogs.com/adodb#downloads
документация там же


"RE: Подключение к Microsoft SQL!"
Отправлено DRiVE , 29-Дек-02 21:44 
-------------------------
см. ниже
-------------------------

"RE: Подключение к Microsoft SQL!"
Отправлено DRiVE , 29-Дек-02 21:45 
Цитата из РНР 3.0 мануал:
msql
msql -- посылает mSQL-запрос
Описание

int msql (string database, string query, int link_identifier);

Возвращает положительный идентификатор результата mSQL-запроса или false в случае ошибки.

msql() выбирает базу данных и выполняет на ней запрос. Если не указан необязательный идентификатор связи, функция будет пытаться найти открытую связь с mSQL-сервером и если ни одной связи найдено не будет, функция попытается создать ее, как если бы вызывалась функция msql_connect() без аргументов (см. msql_connect() ).

msql_affected_rows
msql_affected_rows -- возвращает количество строк результата запроса
Описание

int msql_affected_rows (int query_identifier);

Возвращает количество строк результата запроса (т.е. количество строк, возвращаемых SELECT, количество строк, модифицированных UPDATE или количество строк, удаленных DELETE).

См.также: msql_query()

msql_close
msql_close -- закрывает соединение с mSQL
Описание

int msql_close (int link_identifier);

Возвращает true в случае успеха и false в случае ошибки.

msql_close() закрывает связь с базой данных mSQL, которая ассоциирована с указанным идентификатором связи. Если идентификатор связи не указан, закрывается последняя открытая связь.

Заметьте, что обычно нет необходимости это делать, т.к. непостоянные связи автоматически закрываются после исполнения скрипта.

msql_close() не закрывает постоянную связь, открытую с помощью msql_pconnect() .

См.также: msql_connect() и msql_pconnect() .

msql_connect
msql_connect -- открывает соединение с mSQL
Описание

int msql_connect (string hostname);

В случае успеха возвращает положительный идентификатор связи или false в случае ошибки.

msql_connect() устанавливает соединение с mSQL сервером. Аргумент hostname - необязателен, и если он пропущен, подразумевается localhost.

В случае второго вызова функции msql_connect() с одинаковыми аргументами, новой связи не образуется, а вместо нее возвращается идентификатор уже открытого соединения.

Связь серверои будет закрыта сразу же, как только прекратится выполнение скрипта или ранее она не будет закрыта вызовом функции msql_close() .

См.также msql_pconnect() , msql_close() .

msql_create_db
msql_create_db -- создает базу данных в mSQL
Описание

int msql_create_db (string database name, int [ link_identifier ] );

msql_create_db() пытается создать новую базу данных на сервере, ассоциированном с указанным идентификатором связи.

См.также: msql_drop_db() .

msql_createdb
msql_createdb -- создает базу данных в mSQL
Описание

int msql_createdb (string database name, int [ link_identifier ] );

Идентична msql_create_db() .

msql_data_seek
msql_data_seek -- перемещает внутренний указатель строки
Описание

int msql_data_seek (int query_identifier, int row_number);

Возвращает true в случае успеха и false в случае ошибки.

msql_data_seek() передвигает внутренний указатель строки результата msql_data_seek() ассоциированного с указанным идентификатором запроса для того, чтобы указать на строку с конкретным номером. Вызов msql_fetch_row() возвратит эту строку.

См.также: msql_fetch_row() .

msql_dbname
msql_dbname -- возвращает название текущей базы данных mSQL
Описание

string msql_dbname (int query_identifier, int i);

msql_dbname() возвращает название базы данных записанной в положении i указателя, возвращаемого функцией msql_listdbs() . Для определения количества доступных баз данных может быть использована функция msql_numrows() .

msql_drop_db
msql_drop_db -- удаляет базу данных mSQL
Описание

int msql_drop_db (string database_name, int link_identifier);

Возвращает true в случае успеха и false в случае ошибки.

msql_drop_db() пытается полностью удалить с сервера базу данных, ассоциированную с указанным идентификатором связи.

См.также: msql_create_db() .

msql_dropdb
msql_dropdb -- удаляет базу данных mSQL
Описание
См. msql_drop_db() .

msql_error
msql_error -- возвращает ссобщение об ошибке последнего обращения функций к msql
Описание

string msql_error ( );

Ошибки, идующие от сервера mSQL больше не выдают предупреждений. Вместо них используйте функции для извлечения строки ошибки.

msql_fetch_array
msql_fetch_array -- извлекает строку как массив
Описание

int msql_fetch_array (int query_identifier);

Возвращает массив, который соответствует извлеченной строке. Если больше строк нет, возвращается false.

msql_fetch_array() это расширенная версия функции msql_fetch_row() . В дополнение к записи данных в массив с цифровыми индексами, данные также записываются в ассоциативный массив, использующий названия полей в качестве ключей.

Будьте осторожны при извлечении данных из запроса, который может возвратить запись, содержащую одно поле со значением 0 (или пустую строку, или NULL).

Важно заметить, что использование msql_fetch_array() работает совсем НЕ медленнее, чем msql_fetch_row() , причем обеспечивает при этом важные дополнения.

За дополнительной информацией обратитесь к msql_fetch_row()

msql_fetch_field
msql_fetch_field -- извлекает информацию о поле
Описание

object msql_fetch_field (int query_identifier, int field_offset);

Возвращает объект, содержащий информацию о поле

msql_fetch_field() может использоваться для извлечения информации о полях в некоторых результатх запросов. Если не указано смещение поля, то возвращается следующее поле не извлеченное функцией msql_fetch_field() поле.

Свойствами объекта являются:


name - название колонки

table - название таблицы, которой принадлежит колонка to

not_null - 1, если колонка не может быть равна null

primary_key - 1, если колонка является первичным ключом

unique - 1, если колонка является уникальным ключом

type - тип колонки


См.также msql_field_seek() .

msql_fetch_object
msql_fetch_object -- fetch row as object
Описание

int msql_fetch_object (int query_identifier);

Возвращает объект со свойствами, соответствующими извлеченной строке. Если больше нет строк, возвращается false.

msql_fetch_object() эквивалентно msql_fetch_array() , с одним исключением - вместо массива возвращается объект. Это значит, что доступ у данным может производиться только по названию поля, а не по их смещению (числа - неправильные названия полей).

По скорости работы функция иденитична msql_fetch_array() и msql_fetch_row() (разница очень маленькая).

См.также: msql_fetch_array() and msql_fetch_row() .

msql_fetch_row
msql_fetch_row -- возвращает строку как массив с числовыми индексами
Описание

array msql_fetch_row (int query_identifier);

Возвращает массив, соответствующий извлеченной строке. Если больше нет строк, то возвращается false.

msql_fetch_row() извлекает одну строку данных из результата, асслциированного с указанным идентификатором. Строка возвращается как массив. Каждая колонка результата записывается в массив со смещение, начиная со смещения 0.

Следующий вызов msql_fetch_row() возвратит следубщую строку из результата. Если строк больше нет, возвратится false.

См.также: msql_fetch_array() , msql_fetch_object() , msql_data_seek() , и msql_result() .

msql_fieldname
msql_fieldname -- получает название поля
Описание

string msql_fieldname (int query_identifier, int field);

msql_fieldname() возвращает название указанного поля. query_identifier - идентификатор запроса, и field - индекс поля. msql_fieldname($result, 2); возвратит название второго поля результата, ассоциированного с идентификатором результата.

msql_field_seek
msql_field_seek -- устанавливает смещение поля
Описание

int msql_field_seek (int query_identifier, int field_offset);

Перемещает указатель на указанное смещение поля. Если последующий вызов msql_fetch_field() не будет включать в себя смещение поля, будет возвращено текущее поле.

См.также: msql_fetch_field() .

msql_fieldtable
msql_fieldtable -- получает название таблицы для поля
Описание

int msql_fieldtable (int query_identifier, int field);

Возвращает название таблицы, откуда было извлечено поле field .

msql_fieldtype
msql_fieldtype -- получает тип поля
Описание

string msql_fieldtype (int query_identifier, int i);

msql_fieldtype() эквивалентно msql_fieldname() . Аргументы идентичны, но возвращается тип поля. Тип может быть следующим: "int", "string" или "real".

msql_fieldflags
msql_fieldflags -- получает флаги поля
Описание

string msql_fieldflags (int query_identifier, int i);

msql_fieldflags() возвращает флаги указанного поля. В текущий момент они могут быть следующими: "not null", "primary key", их комбинацией или "" (пустая строка).

msql_fieldlen
msql_fieldlen -- получает длину поля
Описание

int msql_fieldlen (int query_identifier, int i);

msql_fieldlen() возвращает длину указанного поля.

msql_free_result
msql_free_result -- высвобождает рузультат из памяти
Описание

int msql_free_result (int query_identifier);

msql_free_result() освобождает память, ассоциированную с query_identifier . Когда PHP завершает запрос, эта память осовобождается автоматически, таким образом Вам нужно вызывать эту функцию только тогда, когда Вы хотите быть уверены, что не используете слишком много памяти во время исполнения скрипта.

msql_freeresult
msql_freeresult -- освобождает результат из памяти
Описание
См. msql_free_result()

msql_list_fields
msql_list_fields -- перечисляет поля результата
Описание

int msql_list_fields (string database, string tablename);

msql_list_fields() извлекает информацию о данной таблице. Аргументами являются название базы данных и название таблицы. Возвращается указатель результата, который может быть использован функциями msql_fieldflags() , msql_fieldlen() , msql_fieldname() , и msql_fieldtype() . Идентификатор запроса - положительное целое число. Функция возвращает -1 если возникла ошибка. Строка, описывающая ошибку будет помещена в $phperrmsg , и до тех пор, пока функция не будет вызвана как @msql_list_fields() , строка ошибки будет выводится на печать.

См.также msql_error() .

msql_listfields
msql_listfields -- перечисляет поля результата
Описание
See msql_list_fields() .

msql_list_dbs
msql_list_dbs -- перечисляет базы данных mSQL на сервере
Описание

int msql_list_dbs (void);

msql_list_dbs() возвратит указатель на результат, содержащий базы данных, доступные с текущего msql демона. Используйте функцию msql_dbname() для извлечения имен таблиц.

msql_listdbs
msql_listdbs -- перечисляет базы данных mSQL на сервере
Описание
См. msql_list_dbs() .

msql_list_tables
msql_list_tables -- перечисляет таблицы в базе данных mSQL
Описание

int msql_list_tables (string database);

msql_list_tables() в качестве параметра использует название базы данных, и возвращает у казатель на результат, примерно, как и функция msql() . Для извлечения настоящих названий таблиц должна быть использована функция msql_tablename() , параметром в которую передается указатель на результат.

msql_listtables
msql_listtables -- перечисляет таблицы в базе данных mSQL
Описание
См. msql_list_tables() .

msql_num_fields
msql_num_fields -- получает количество полей в результате
Описание

int msql_num_fields (int query_identifier);

msql_num_fields() возвращает количество полей в данных резултата.

См.также: msql() , msql_query() , msql_fetch_field() , и msql_num_rows() .

msql_num_rows
msql_num_rows -- получает количество строк результата
Описание

int msql_num_rows (int query_identifier);

msql_num_rows() возвращает количество строк данных результата.

См.также: msql() , msql_query() , и msql_fetch_row() .

msql_numfields
msql_numfields -- получает количество полей результата
Описание

int msql_numfields (int query_identifier);

Идентична msql_num_fields() .

msql_numrows
msql_numrows -- получает количество строк результата
Описание

int msql_numrows (void);

Идентична msql_num_rows() .

msql_pconnect
msql_pconnect -- открывает постоянное соединение с mSQL
Описание

int msql_pconnect (string hostname);

Возвращает положительный идентификатор соединения в случае успеха или false в случае ошибки.

msql_pconnect() ведет себя во многом также как msql_connect() с двумя главными отличиями:

Во-первых, при соединении функция должна попытаться найти (постоянное) соединение, уж открытое с указанным хостом. Если таковое найдено, вместо открытия нового соединения будет возвращен идентификатор только что найденного.

Во-вторых, соединение с SQl-сервером не закроется, когда завершится исполнение скрипты. Вместо этого, соединение останется открытым для будущего использования ( msql_close() не закроет соединение, установленно с помощью msql_pconnect()).

Такой тип связи, поэтому, называется 'постоянным'.

msql_query
msql_query -- посылает mSQL-запрос
Описание

int msql_query (string query, int link_identifier);

msql_query() посылает запрос к текущей активной базе данных на сервере, которая задается идентификатором связи. Если идентификатор связи не указан, то будет использоваться последняя открытая связь. Если связи вообще не открыто, то функция пытается установить связь как если бы вызывалась функция msql_connect() .

Возвращает положительный идентификатор запроса в случае успеха или false в случае ошибки.

См.также: msql() , msql_select_db() , and msql_connect() .

msql_regcase
msql_regcase -- создает регулярное выражение для контекстно независимого поиска
Описание
См. sql_regcase() .

msql_result
msql_result -- получает данные результата
Описание

int msql_result (int query_identifier, int i, mixed field);

Возвращает содержимое ячейки с указанной строки и смещения в указанном рузльтате.

msql_result() возвращает содержимое одной ячейки из результата. Аргумент field может быть смещением поля или его названием или же названием таблицы, точка, названием поля (fieldname.tablename). Если название колонки является псевдонимом ('select foo as bar from...'), используйте псевдоним вместо названия колонки.

При работе с большими результатами запросов, Вы должны рассмотреть возможность использования одной из функций, которые извлекают колонку целиком. Т.к. эти функции извлекают содержимое нескольких ячеек за один вызов, то они работают НАМНОГО быстрее, чем msql_result(). Также заметьте, что при указании числового смещения поля функция работает гораздо быстрее, чем при указании названия поля или аргумента название_таблицы.название_поля.

В качестве высокоскоростной альтернативы рекомендуем: msql_fetch_row() , msql_fetch_array() , и msql_fetch_object() .

msql_select_db
msql_select_db -- выбирает базу данных mSQL
Описание

int msql_select_db (string database_name, int link_identifier);

Возвращает true в случае успеха и false в случае ошибки.

msql_select_db() устанавливает текущую активную базу данных на сервере, которая ассоциируется с указанным идентификатором связи. Если не указан идентификатор связи, используется последняя открытая связь. Если не открыто ни одного соединения, функция попытается установить связь, как если бы вызывалась функция msql_connect(), и в дальнейшем использует установленную связь.

Каждый последующий вызов msql_query() будет сделан на активную базу данных.

См.также: msql_connect() , msql_pconnect() , и msql_query() .

msql_selectdb
msql_selectdb -- выбирает базу данных mSQL
Описание
См. msql_select_db() .

msql_tablename
msql_tablename -- получает название таблицы п=конкретного поля
Описание

string msql_tablename (int query_identifier, int field);

msql_tablename() использует в качестве аргументов указатель на рузультат, возвращаемый функцией msql_list_tables() и целый индекс и возвращает название таблицы. Функция msql_numrows() может быть использована для определения количества таблиц в результате запроса. Пример 1. Использование msql_tablename()

<?php
msql_connect ("localhost");
$result = msql_list_tables("wisconsin");
$i = 0;
while ($i < msql_numrows($result)) {
    $tb_names[$i] = msql_tablename($result, $i);
    echo $tb_names[$i] . "<BR>";
    $i++;
}
?>



"RE: Подключение к Microsoft SQL!"
Отправлено Somebody , 15-Янв-03 20:27 
>Цитата из РНР 3.0 мануал:
>msql
>msql -- посылает mSQL-запрос
>Описание
>
братан ты ничего не перепутал?
1. php3 уже давно ка кнеактуален
2. для тебя что msql == ms sql ?

"RE: Подключение к Microsoft SQL!"
Отправлено mitilan , 15-Янв-03 16:42 
На Unix установи unixODBC(www.unixodbcorg.org - по ссылкам найдешь качать) ,FreeTDS(http://www.unixodbc.org/doc/FreeTDS.html) + модули для Perl(www.cpan.org). Для того чтобы понять как работать с БД через perl, спроси perldoc.(perldoc DBI).


"RE: Подключение к Microsoft SQL!"
Отправлено Somebody , 15-Янв-03 20:28 
>Уважаемый All.
>Подскажите как на PHP или Perl работать с базой данных  Microsoft
>SQL, если это возможно!Или подскажите где можно почитать доку по этому
>поводу!Очень нужно делать выбоки с базы! Или может можно как-то с
> Microsoft SQL в MySQL конвертить данные...или другие какие-нибудь извращения....надо позарез....
>
>Заранее очень благодарен!


на пхп чезер odbc (как и вслучае перла нужен unixodbc)


"RE: Подключение к Microsoft SQL!"
Отправлено Mephisto , 16-Янв-03 16:47 
>>Уважаемый All.
>>Подскажите как на PHP или Perl работать с базой данных  Microsoft
>>SQL, если это возможно!Или подскажите где можно почитать доку по этому
>>поводу!Очень нужно делать выбоки с базы! Или может можно как-то с
>> Microsoft SQL в MySQL конвертить данные...или другие какие-нибудь извращения....надо позарез....
>>
>>Заранее очень благодарен!
>
>
>на пхп чезер odbc (как и вслучае перла нужен unixodbc)

В php4+ точно есть функции работы с mssql, как то:
mssql_connect(); - коннект к базе
mssql_query(); - запрос
Правда, я обычно использую класс, который когда-то писал, мне так удобнее, если надо, то могу дать.


"RE: Подключение к Microsoft SQL!"
Отправлено Dawnshade , 17-Янв-03 10:58 
>на пхп чезер odbc (как и вслучае перла нужен unixodbc)

Да щаз-то!
На перле вполне хватает DBI+FreeTDS+DBD-Sybase


"RE: Подключение к Microsoft SQL!"
Отправлено NL , 27-Янв-03 11:26 
>
>Да щаз-то!
>На перле вполне хватает DBI+FreeTDS+DBD-Sybase

а не могли бы привести небольшой пример кодключения к MS SQL на перле ? а то на Си у меня все работает, а на перле хоть убей, выдает какую-то внутреннюю ошибку



"RE: Подключение к Microsoft SQL!"
Отправлено Dawnshade , 27-Янв-03 11:33 
>>
>>Да щаз-то!
>>На перле вполне хватает DBI+FreeTDS+DBD-Sybase
>
>а не могли бы привести небольшой пример кодключения к MS SQL на
>перле ? а то на Си у меня все работает, а
>на перле хоть убей, выдает какую-то внутреннюю ошибку

                                                                                                                                                          my $user='OPERATOR';                                                                                                      
my $password='BILLOPER';                                                                                                  
my $calling_number=$ENV{REMOTE_USER};                                                                                                                                                                                                                
my $dbh = DBI->connect('DBI:Sybase:server=XXXXX2; Database=XXXX', $user, $password)||die;
$dbh->{'syb_flush_finish'} = 1;  
my $field_1;                                                                                                                my @first_1;                                                                                                                                                                                                                                          
my $sql_str = "select CallDateTime, CalledNumber, CallingNumber, DialedArea, DurationOper, Cost, CostTax from Bars300 where (CallingNumber LIKE '%$calling_number%')                                                                               and (CallDateTime between '$startdatetime' and '$enddatetime')                                                          
  ORDER BY CallDateTime";                                                                                                                                                                                                                                   my $sth = $dbh->prepare($sql_str) || die;                                                                                   $sth->execute;
while ( my @first_1 = $sth->fetchrow_array ) {                                                                            
        foreach my $field_1 ( @first_1 ) { }
}


"RE: Подключение к Microsoft SQL!"
Отправлено NL , 27-Янв-03 11:50 
server нужно прописывать в interfaces или еще где-либо ?


"RE: Подключение к Microsoft SQL!"
Отправлено Dawnshade , 27-Янв-03 11:55 
>server нужно прописывать в interfaces или еще где-либо ?

Да. Только там.


"RE: Подключение к Microsoft SQL!"
Отправлено NL , 27-Янв-03 12:37 
ok спасибо