П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 176240 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 73095 раз(а).

Учебник HTML.
Просмотров 72747 раз(а).

Руководство по PHP5.
Просмотров 43497 раз(а).

Хостинг через призму DNS.
Просмотров 50105 раз(а).

Подборка текстов стандартных документов.
Просмотров 43733 раз(а).

Учебник PHP - Самоучитель
Просмотров 50050 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 50414 раз(а).

Внешние атаки...
Просмотров 40816 раз(а).

Учебник PHP.
Просмотров 35938 раз(а).

SSI в примерах.
Просмотров 26998 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




ГЛАВА 11. Базы данных

Поддержка ODBC в РНР

Функции 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).

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

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

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

odbc_close()

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

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

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

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

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(). Необязательный параметр передается лишь в том случае, если при вызове функции передаются дополнительные данные.

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

<?
$connect = @obdc_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()».

odbc_exec()

Функция odbc_exec() объединяет odbc_prepare() и odbc_execute(). Синтаксис функции odbc_exec():

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

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

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

$query = "SELECT * FROM customers";
$result = odbc_exec($connect, $query) or die("Couldn't execute query!");

odbc_close($connect);
?>

В этом примере функция 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. Рассмотрим следующий пример:

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

$query = "SELECT * FROM customers";
$result = odbc_exec($connect, $query) or die("Couldn't execute query!");

odbc_result_all($result, "BGCOLOR='#c0c0c0' border='1' ");

odbc_close($connect);
?>

В результате выполнения этого примера содержимое таблицы 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(). Помните, что без этой функции обычно можно обойтись, если только вы не собираетесь выполнять несколько запросов в одном сценарии, поскольку с завершением сценария вся память будет автоматически освобождена.

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

$query = "SELECT * FROM customers":
$result = odbc_exec($connect, $query) or die("Couldn't execute query!");

odbc_result_all($result, "BGCOLOR='#c0c0c0' border='1' "');
odbc_free_result($result);

odbc_close($connect);
?>

После того как функция odbc_result_all() завершила использование идентификатора результата, память возвращается в систему при помощи odbc_free_result().

На этом завершается наше знакомство с функциями ODBC в РНР, незаменимыми при создании простых интерфейсов на базе ODBC для доступа через Web. В следующем разделе многие из этих функций будут использованы для демонстрации того, как легко на базе РНР организуется взаимодействие с одной из самых популярных СУБД — Microsoft Access.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru