17.5. ODBC
Открытый интерфейс доступа к базам данных (Open Database Connectivity, ODBC) стал промышленным стандартом обмена данными с базами данных. Модель здесь очень проста. Для использования ODBC API было разработано клиентское программное обеспечение. Изготовители разрабатывают драйверы, работающие с этим API на стороне клиента и работающие непосредственно с базой данных на стороне сервера. Это позволяет разработчикам программных приложений создавать приложения, которые могут работать с различными базами данных путем простой замены драйвера, который является внешним файлом.
ODBC использует SQL в качестве языка общения с любой базой данных, даже когда база данных не является реляционной. Microsoft предлагает драйверы, которые позволяют создавать запросы для работы с текстовыми файлами и рабочими книгами Excel. Первоначально об ODBC лучше всего узнать на узле, предназначенном для разработчиков Microsoft, - <http://msdn.microsoft.com/>.
Microsoft определенное время предлагала бесплатные ODBC-драйверы, но только для своих операционных систем. ODBC-драйверы для ОС Unix достать труднее. Многие из разработчиков баз данных также предлагают свои драйверы, кроме того, на рынке есть еще и третьи игроки: такие компании, как Intersolv, продают оптимизированные драйверы как для Windows, так и для Unix.
Многие базы данных позволяют осуществлять доступ к ним из PHP как через "родные" драйверы, так и через ODBC-драйверы. Есть также множество баз данных, доступ к которым осуществляется из PHP только через ODBC, например СУБД Solid и Empress.
В создании расширения, работающего с ODBC, принимали участие разработчики Стиг Баккен (Stig Bakken), Андреас Караджаннис (Andreas Karajannis) и Франк Кроман (Frank Kromann).
boolean odbc_autocommit(resource connection, boolean on)
Функция odbc_autocommit (листинг 17.21) задает автоматическое выполнение команд ODBC. По умолчанию она активна. Аргументом connection является целое число, возвращаемое функцией odbc_connect или odbc_pconnect. Эта функция используется в зависимости от ситуации, так как не все ODBC-драйверы поддерживают работу операторов commit и rollback.
I Листинг 17.21. Функция odbc_autocommit_
<?php
// подключиться к базе данных
$Link = odbc_connect("inventory", "guest", "guest"); //отключить режим auto-commit odbc_autocommit($Link, FALSE);
?>
boolean odbc_binmode(resource result, integer mode)
Функция odbc_binmode (листинг 17.22) задает способ возврата данных двоичными столбцами для результирующего набора. Когда драйвер возвращает двоичные данные, каждый байт представляется шестнадцатеричными кодами. По умолчанию PHP преобразует эти коды в двоичные данные. Если необходимо использовать функцию odbc_longreadlen для задания максимальной длины значений данных типа long, отличного от нуля, можно задать один из режимов, приведенных в табл. 17.10. Если максимальная длина чтения равна нулю, данные в любом случае преобразуются в двоичные.
Листинг 17.22. Функция odbc_binmode
<?php
//получить из базы данных GIF-файл и переслать его в браузер // подключиться к базе данных
$Connection = odbc_connect("inventory", "admin", "secret"); // выполнить запрос
$Query = "SELECT Data " . "FROM Picture " .
"WHERE ID=2 "; $Result = odbc_do($Connection, $Query);
//установить режим binmode для пересылки двоичных данных
odbc_binmode($Result, ODBC_BINMODE_PASSTHRU);
//установить режим longreadlen // для ответа браузеру odbc_longreadlen($Result, 0);
// принять первую строку и проигнорировать остальные odbc_fetch_row($Result);
//отправить заголовок в браузер так, чтобы он "знал", что имеет формат GIF
header("Content-type: image/gif"); // получить картинку odbc_result($Result, 1);
?>
odbc_close(resource connection)
Функция odbc_close (листинг 17.23) предназначена для закрытия соединения с базой данных. Если имеют место открытые транзакции к соединению, то возвращается ошибка и это соединение не закрывается.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Базы данных. Часть Пятнадцатая.
24-03-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Базы данных. Часть Четырнадцатая. | PHP. Базы данных. Часть Шестнадцатая. |