PHP поддерживает работу с различными базами данных. При этом реляционные базы данных типа Open Source так же хорошо представлены, как и коммерческие продукты. Если встроенная поддержка базы данных отсутствует, можно использовать ODBC с со­ответствующим драйвером. В главе 23, "Интеграция баз данных", обсуждаются стратегии использования баз данных на Web-узлах, работающих под управлением PHP.
Большинство функций из этого раздела опирается на дополнительные модули, которые могут быть загружены в конфигурационном файле php.ini или с помощью функции dl, но в большинстве случаев были скомпилированы при компиляции PHP.
Несмотря на то что в этой главе описываются функции PHP, работающие с различными СУБД, в ней не описаны все тонкости, присущие каждой из используемых СУБД. Перед ней также не ставилась задача стать обучающим материалом по языку SQL. Если вы уже выбрали определенную базу данных для дальнейшей интеграции с PHP, то должны были заранее побольше узнать о ней. Автор, например, является большим поклонником MySQL, и в 2001 году написал книгу, которая была издана Издательским домом "Вильямс" MySQL. Библиотека профессионала.
17.1. Общие моменты работы с базами данных типа DBM
В данном разделе кратко описываются DBA-функции, работающие с базами данных, удовлетворяющими стандарту СУБД типа Berkeley DB. Вместо сохранения реляционных записей базы данных типа DBM сохраняют пары ключ-значение, что соответствует ассоциативному массиву.
Функции, описанные в этом разделе, замещают набор функций, позволяющих работать с одним типом DBM-базы данных. Эти новые функции позволяют выбирать систему из PHP-кода, а не компилировать PHP только для одной базы данных DBM-типа.
Тип базы данных выбирается при установлении соединения, и остальные функции работают уже исходя из этого. Эти функции добавил Саша Шуман.
dba_close(resource connection)
Функция dba_close закрывает соединение с базой данных. Аргумент connection является целым числом, возвращенным функцией dba_open или dba_popen. Если вы не закрыли соединение с СУБД, за вас это сделает PHP. 
boolean dba_delete(string key, resource connection)
Функция dba_delete (листинг 17.1) удаляет запись из базы данных. При этом необходимо указать ключ и активное подключение к базе данных, которое можно получить с помощью функции dba_open или dba_popen. Результат операции удаления возвращается в виде логического значения.

| Листинг 17.1. Программирование интерфейса с базой данных типа DBM_
<?php
// открыть базу данных в режиме записи
if(($db = dba_popen('inventory', 'w', 'gdbm')) === FALSE) {
print('базу данных открыть нельзя!'),-exit();
}
if(dba_exists('3', $db))
{
//если код 3 существует, задать для него значение, равное 150
dba_replace('3', 450', $db);
print("Заменили значение для кода 3<br>");
}
else
{
//кода 3 не существует, добавить его
dba_insert('3', 450', $db);
print("Добавили значение для кода 3<br>");
}
if(dba_exists('4', $db))
{
//удалить запись для кода 4
dba_delete('4', $db);
print("Удален код 4<br>");
}
Else
{
dba_insert('4', '500', $db);
print(" Добавлена запись для кода 4<br>");
}
// синхронизировать базу данных
dba_sync($db);
// получить все записи
for($key = dba_firstkey($db);
$key !== FALSE;
$key = dba_nextkey($db))
{
print("$key = " . dba_fetch($key, $db) . "<br>");
}
// close database dba_close($db);
?> 
boolean dba_exists(string key, resource connection)
Функция dba_exists проверяет существование ключа. Аргументом connection представляется целое число, возвращенное функцией dba_open или dba_popen. Пример использования функции dba_exists см. в описании функции dba_delete.
string dba_fetch(string key, resource connection)
string dba_fetch(string key, integer skip, resource connection)
Функция dba_fetch предназначена для выборки записи по ее ключу. Вторую форму этой функции, включающую необязательный аргумент skip, поддерживают только базы данных CDB. Этот аргумент предназначен для задания количества пропускаемых повторяющихся записей. Аргумент connection задает переменную типа resource, возвращаемую функцией dba_open или dba_popen.