Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_15-16.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
401.92 Кб
Скачать

Поддержка odbc в php

Функции ODBC в РНР, обычно называемые общими функциями ODBC, не только обеспечивают типовую поддержку ODBC, но и позволяют работать с некоторыми СУБД, обладающими собственным API, через стандартный ODBC API. К числу последних относятся следующие СУБД:

  • Adabas D;

  • IODBC;

  • IBM DB2;

  • Solid;

  • Sybase SQL Anywhere.

Обратите внимание: при работе с перечисленными СУБД стандартный механизм ODBC на самом деле не используется. Просто поддерживаемые в РНР общие функции ODBC применяются для взаимодействия с базами данных. Это удобно, поскольку при переходе на другую ODBC-совместимую СУБД (или СУБД из приведенного выше списка) все ваши сценарии будут нормально работать.

Поддержка ODBC встроена в комплект поставки РНР, поэтому вам за редкими исключениями практически не придется заниматься специальной настройкой.

В настоящее время существует около 40 общих функций ODBC. Впрочем, для выборки информации из ODBC-совместимой базы данных вполне достаточно нескольких функций, описанных ниже. Полный список общих функций ODBC в РНР приведен в документации (http://www.php.net/manual).

1) 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_connect() в программе несложно.

Пример:

<? odbc_connect("myAccessDB", "user", "secret") or die( "Could not connect to ODBC database"); ?>

Функция используется для открытия восстанавливаемых (persistent) соединений с базами данных. Она экономит системные ресурсы, поскольку odbc_pconnect() проверяет, не было ли данное соединение открыто ранее, и если было, использует предыдущее соединение.

2) odbc_close()

После завершения работы с ODBC-совместимой базой данных соединение необходимо закрыть, чтобы освободить все ресурсы, используемые открытым соединением. Соединение закрывается функцией odbc_close():

void odbc_close ([int идентификатор_соединения])

В параметре идентификатор_соединения передается идентификатор открытого соединения. Рассмотрим небольшой пример:

<? $connect=odbc_connect("myAccessDB", "user", "secret") or die("Could not connect to ODBC database"); print "Currently connected to ODBC database!"; odbc_close($connect); ?>

3) odbc_prepare()

Перед непосредственной обработкой запрос необходимо "подготовить". Задача решается функцией odbc_prepare():

int odbc_prepare (int идентификатор_соединения , string запрос)

В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect(). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, в дальнейшем используемый при вызове функции odbc_execute() (см. ниже).

4) odbc_execute()

Запрос, подготовленный функцией odbc_prepare(), выполняется функцией odbc_execute(). Синтаксис функции odbc_execute():

int odbc_execute (int идентификатор результата [, array параметры])

В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_prepare(). Необязательный параметр передается лишь в том случае, если при вызове функции передаются дополнительные данные.

Рассмотрим следующий пример:

<? $connect = @odbc_connect("myAccessDB", "user", "secret") or die("Could not connect to ODBC database"); $query = "UPDATE customers SET cust_id = \"Milano, Inc.\" WHERE cust_id=\"2000cu\""; $result = odbc_prepare($connect, $query) or die("Couldn't prepare query!"); $result = odbc_execute($result) or die("Couldn't execute query!"); odbc_close($connect); ?>

В приведенном примере продемонстрирована транзакция ODBC, при которой данные запроса не отображаются в браузере (как это обычно делается при использовании команды SELECT). Транзакция ODBC с использованием запроса QUERY описана ниже, в разделе "odbc_result_all()".