ODBC and DB2 Functions (PDO_ODBC)
PDO_ODBC is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to databases through ODBC drivers or through the IBM DB2 Call Level Interface (DB2 CLI) library. PDO_ODBC currently supports three different «flavours» of database drivers: ibm-db2
Supports access to IBM DB2 Universal Database, Cloudscape, and Apache Derby servers through the free DB2 client.
Supports access to database servers through the unixODBC driver manager and the database’s own ODBC drivers.
Offers a compile option for ODBC driver managers that are not explicitly supported by PDO_ODBC.
On Windows, PDO_ODBC is built into the PHP core by default. It is linked against the Windows ODBC Driver Manager so that PHP can connect to any database cataloged as a System DSN, and is the recommended driver for connecting to Microsoft SQL Server databases.
Установка
- As of PHP 5.1, PDO_ODBC is included in the PHP source. You can compile the PDO_ODBC extension as either a static or shared module using the following configure commands. ibm_db2
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
To build PDO_ODBC with the ibm-db2 flavour, you have to have previously installed the DB2 application development headers on the same machine on which you are compiling PDO_ODBC. The DB2 application development headers are an installable option in the DB2 servers, and are also available as part of the DB2 Application Development Client freely available for download from the IBM DB2 Universal Database » support site. If you do not supply a location for the DB2 libraries and headers to the configure command, PDO_ODBC defaults to /home/db2inst1/sqllib . unixODBC
./configure --with-pdo-odbc=unixODBC,/usr/local
If you do not supply a location for the unixODBC libraries and headers to the configure command, PDO_ODBC defaults to /usr/local . generic
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
Настройка во время выполнения
Поведение этих функций зависит от установок в php.ini .
Имя | По умолчанию | Меняемо | Список изменений |
---|---|---|---|
pdo_odbc.connection_pooling | «strict» | PHP_INI_ALL | Available since PHP 5.1.0. |
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | Available since PHP 5.1.1. Эта возможность устарела и будет обязательно удалена в будущем. |
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.
Краткое разъяснение конфигурационных директив.
Whether to pool ODBC connections. Can be one of «strict», «relaxed» or «off» (equals to «»). The parameter describes how strict the connection manager should be when matching connection parameters to existing pooled connections. strict is the recommend default, and will result in the use of cached connections only when all the connection parameters match exactly. relaxed will result in the use of cached connections when similar connection parameters are used. This can result in increased use of the cache, at the risk of bleeding connection information between (for example) virtual hosts.
This setting can only be changed from the php.ini file, and affects the entire process; any other modules loaded into the process that use the same ODBC libraries will be affected too, including the Unified ODBC extension.
relaxed matching should not be used on a shared server, for security reasons.
Leave this setting at the default strict setting unless you have good reason to change it.
If you compile PDO_ODBC using the db2 flavour, this setting sets the value of the DB2INSTANCE environment variable on Linux and UNIX operating systems to the specified name of the DB2 instance. This enables PDO_ODBC to resolve the location of the DB2 libraries and make cataloged connections to DB2 databases.
This setting can only be changed from the php.ini file, and affects the entire process; any other modules loaded into the process that use the same ODBC libraries will be affected too, including the Unified ODBC extension.
This setting has no effect on Windows.
Поддержка ODBC в РНР
Функции ODBC в РНР, обычно называемые общими функциями ODBC, не только обеспечивают типовую поддержку ODBC, но и позволяют работать с некоторыми СУБД, обладающими собственным API, через стандартный ODBC API. К числу последних относятся следующие СУБД:
Обратите внимание: при работе с перечисленными СУБД стандартный механизм ODBC на самом деле не используется. Просто поддерживаемые в РНР общие функции ODBC применяются для взаимодействия с базами данных. Это удобно, поскольку при переходе на другую ODBC-совместимую СУБД(или СУБД из приведенного выше списка) все ваши сценарии будут нормально работать.
Поддержка ODBC встроена в комплект поставки РНР, поэтому вам за редкими исключе-ниями практически не придется заниматься специальной настройкой.
В настоящее время существует около 40 общих функций ODBC. Впрочем, для выборки информации из ODBC-совместимой базы данных вполне достаточно нескольких функций, описанных ниже. Полный список общих функций ODBC в РНР приведен в документации(http://www.php.net/manual).
odbc_connect()
Перед тем как обращаться к ODBC-совместимой базе данных с запросами, необходимо сначала установить с ней связь. Соединение создается функцией ocbc_connect(). Синтаксис функции odbc_connect():
int odbc_connect(string источник_данных, string имя_пользователя, string пароль [, int тип_курсора])
Параметр источник_данных определяет ODBC-совместимую базу данных, с которой вы пытаетесь установить связь. В параметрах имя_пользователя и пароль, как нетрудно догадаться, передаются имя пользователя и пароль, необходимые для подключения к источнику данных. Необязательный параметр тип_курсора предназначе’н для устранения проблем, возникающих при работе с некоторыми драйверами ODBC. Он может принимать одно из четырех возможных значений:
- SQL_CUR_USE_IF_NEEDED;
- SQL_CURSOR_USE_ODBC;
- SQL_CUR_USE_DRIVER;
- SQL CUR DEFAULT.
Возможно, вам не придется использовать этот параметр, но все же о нем следует помнить на случай, если ваш пакет ODBC не справится с обработкой того или иного запроса.
Использовать odbc_connect() в программе несложно. Пример:
Функция используется для открытия восстанавливаемых(persistent) соединений с базами данных. Она экономит системные ресурсы, поскольку odbc_pconnect() проверяет, не было ли данное соединение открыто ранее, и если было, использует предыдущее соединение.
odbc_close()
После завершения работы с ODBC-совместимой базой данных соединение необходимо закрыть, чтобы освободить все ресурсы, используемые открытым соединением. Соединение закрывается функцией odbc_close():
void odbc_close([int идентификатор_соединения])
В параметре идентификатор_соединения передается идентификатор открытого соединения. Рассмотрим небольшой пример:
odbc_prepare()
Перед непосредственной обработкой запрос необходимо «подготовить». Задача решается функцией odbc_prepare():
int odbc_prepare(int идентификатор_соединения , string запрос)
В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect(). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, в дальнейшем используемый при вызове функции odbc_execute()(см. ниже).
odbc_execute()
Запрос, подготовленный функцией odbc_prepare(), выполняется функцией odbc_execute(). Синтаксис функции odbc_execute():
int odbc_execute(int идентификатор результата [, array параметры])
В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_prepare(). Необязательный параметр передается лишь в том случае, если при вызове функции передаются дополнительные данные.
Рассмотрим следующий пример:
В приведенном примере продемонстрирована транзакция ODBC, при которой данные запроса не отображаются в браузере(как это обычно делается при использовании команды SELECT). Транзакция ODBC с использованием запроса QUERY описана ниже, в разделе «odbc_result_all()».
odbc_exec()
Функция odbc_exec() объединяет odbc_prepare() и odbc_execute(). Синтаксис функции odbc_exec():
int odbc_exec(int идентификатор_соединения , string запрос)
В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect(). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, используемый при последующих вызовах функций:
В этом примере функция odbc_exec() пытается выполнить запрос, текст которого содержится в переменной $query. При успешном выполнении переменной $result присваивается идентификатор результата; в случае неудачи ей присваивается значение FALSE и выводится сообщение, передаваемое при вызове die().
odbc_result_all()
Очень удобная функция odbc_result_all() форматирует и отображает все записи для идентификатора результата, полученного при вызове odbc_exec() или odbc_execute(). Синтаксис функции odbc_result_all():
int odbc_result_all(int идентификатор_результата [, string формат_таблицы])
В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_exec() или odbc_execute(). В необязательном параметре формат_таблицы передаются характеристики таблицы HTML. Рассмотрим следующий пример:
В результате выполнения этого примера содержимое таблицы customers будет выведено в таблице на светло-сером фоне с рамкой толщиной 1. Внешний вид таблицы для данных, приведенных на рис. 11.1, изображен на рис. 11.2.
Рис. 11.2. Данные ODBC в браузере
odbc_free_result()
Хороший стиль программирования требует освобождения всех ресурсов, связанных с завершенными операциями. При работе с запросами ODBC эта задача решается функцией odbc_free_result(). Синтаксис функции odbc_free_result():
int odbc_free_result(int идентификатор_результата)
В параметре функции передается идентификатор результата, который больше не будет использоваться в программе. Следует помнить, что все ресурсы памяти автоматически освобождаются по завершении сценария; таким образом, вызов функции odbc_free_result() необходим лишь для очень больших запросов, расходующих очень большие объемы памяти. Ниже приведен пример, демонстрирующий применение odbc_free_result(). Помните, что без этой функции обычно можно обойтись, если только вы не собираетесь выполнять несколько запросов в одном сценарии, поскольку с завершением сценария вся память будет автоматически освобождена.
После того как функция odbc_result_all() завершила использование идентификатора результата, память возвращается в систему при помощи odbc_free_result().
На этом завершается наше знакомство с функциями ODBC в РНР, незаменимыми при создании простых интерфейсов на базе ODBC для доступа через Web. В следующем разделе многие из этих функций будут использованы для демонстрации того, как легко на базе РНР организуется взаимодействие с одной из самых популярных СУБД — Microsoft Access.
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
Copyright © 2005-2016 Project.Net.Ru
web-mastering.blogspot.com
ODBC (Open Database Connectivity, открытый механизм взаимодействия с базами данных) — это программный интерфейс (API) доступа к базам данных, разработанный фирмой Microsoft.
С помощью ODBC, программы могут подключаться к различным СУБД (MySQL, Microsoft SQL Server, SQLite, MongoDB и другие) и выполнять SQL-запросы.
Как создать имя источника базы данных (DSN)
Имя источника базы данных указывается в функции подключения ODBC.
Например, в PHP эта функция называется odbc_connect().
1. Нажимаем «Пуск»
2. Заходим в «Панель управления»
3. Ищем пункт «Администрирование»
Если вы не видите этого пункта, то переключите «Просмотр» из режима «Категория» в режим «Мелкие значки» или «Крупные значки».
4. Нажимаем на ссылку «Источник данных (ODBC)»
5. Открываем вкладку «Пользовательский DSN»
6. Нажимаем «Добавить»
8. Указываем «Имя» источника данных. Имя может быть любым, но я рекомендую использовать имя сервера, в моем случае это «mssql4.gear.host»
9. В поле «Сервер» нужно указать имя сервера, у меня это значение такое же как «Имя» — «mssql4.gear.host»
10. Указываем «проверка подлинности учетной записи SQL Server»
11. Устанавливаем флажок «Получить параметры, используемые по умолчанию, от SQL Server.»
12. Заполняем поля «Пользователь» и «Пароль».
16. Готово, мы создали имя источника базы данных (DSN) и теперь мы можем использовать его в своих программах.
Как подключаться к ODBC из PHP
// mssql4.gear.host - это и есть имя источника базы данных (DSN) $connection = odbc_connect('mssql4.gear.host', 'mssql86', 'password');
// «» - здесь ошибки нет, именно так и нужно указывать $connection = odbc_connect('Driver=;Server=mssql4.gear.host;Database=mssql86', 'mssql86', 'password');
string(3) "101" > В таблице «test» была одна колонка «id» с одной записью «101» */