odbc_connect

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_connectСоединяется с источником данных

Описание

odbc_connect(
    string $dsn,
    ?string $user = null,
    #[\SensitiveParameter] ?string $password = null,
    int $cursor_option = SQL_CUR_USE_DRIVER
): Odbc\Connection|false

Идентификатор соединения, который возвращает функция, потребуется другим ODBC-функциям. Разрешается открывать несколько соединений одновременно, если коннектор установил соединение с разными базами данных или разными учётными данными.

Отдельные ODBC-драйверы, которые выполняют сложные хранимые процедуры, иногда завершаются ошибкой наподобие: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it" («Невозможно открыть курсор в хранимой процедуре, которая содержит другие команды, кроме одной команды SELECT»). Тип курсора SQL_CUR_USE_ODBC помогает избегать появления этой ошибки. Отдельные драйверы также не поддерживают необязательный параметр row_number в функции odbc_fetch_row(). Курсор SQL_CUR_USE_ODBC также иногда помогает в похожих случаях.

Список параметров

dsn

Имя источника базы данных (англ. Database Source Name, DSN) для соединения. Альтернативно функция работает и со строкой соединения без DSN-имени.

user

Имя. Параметр игнорируется, если dsn содержит uid. Для подключения без указания user используйте null.

password

Пароль. Параметр игнорируется, если dsn содержит pwd. Для подключения без указания password используйте null.

cursor_option

Устанавливает тип курсора для соединения. Обычно этот параметр не требуется, но иногда становится полезным для обхода проблем с отдельными ODBC-драйверами.

Для типа курсора определили следующие константы:

  • SQL_CUR_USE_IF_NEEDED
  • SQL_CUR_USE_ODBC
  • SQL_CUR_USE_DRIVER

Возвращаемые значения

Функция возвращает ODBC-соединение или false, если возникла ошибка.

Список изменений

Версия Описание
8.4.0 Параметр odbc теперь ожидает экземпляр соединения Odbc\Connection; раньше ожидался аргумент с типом resource.
8.4.0 Функция теперь возвращает экземпляр соединения Odbc\Connection; раньше возвращалось значение с типом resource.
8.4.0 Параметры user и password теперь допускают значение null; они теперь являются необязательными и по умолчанию имеют значение null.
8.4.0 Ранее использование пустой строки для параметра password не включало pwd в генерируемую строку подключения параметра dsn. Теперь он генерируется для включения pwd, который имеет пустую строку в качестве своего значения. Чтобы восстановить прежнее поведение, в параметр password теперь можно передать значение null.
8.4.0 Ранее, если dsn содержал uid или pwd, параметры user и password игнорировались. Теперь параметр user игнорируется, только если значение параметра dsn содержит uid, а параметр password игнорируется, только если значение параметра dsn содержит pwd.

Примеры

Пример #1 Пример соединения без DSN-строки подключения

<?php

// Microsoft SQL Server, который работает через драйвер SQL Native Client 10.0 ODBC Driver, разрешает соединяться
// с серверами SQL 7, 2000, 2005 и 2008
$connection = odbc_connect(
"Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;",
$user,
$password
);

// Соединение с источником данных Microsoft Access
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

// Соединение с источником данных Microsoft Excel
$excelFile = realpath('C:/ExcelData.xls');
$excelDir = dirname($excelFile);
$connection = odbc_connect(
"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=$excelFile;DefaultDir=$excelDir",
'',
''
);

?>

Смотрите также

  • Для постоянных соединений: odbc_pconnect() - Открывает постоянное соединение с базой данных