PHP / 10. Доступ к базам данных

Базы данных являются ключевым моментом многих веб-приложений. База данных может хранить практически любую информацию, которую может потребоваться найти или обновить, например, список пользователей, каталог изделий или последние новости. Одна из причин, по которым PHP занимает такое значительное положение среди языков веб-программирования, заключается в его широком применении для поддержки баз данных. PHP может взаимодействовать (по последним подсчетам) с 17 различными базами данных – как с реляционными, так и нет. Реляционные базы, с которыми он может работать, – это DB++, FrontBase, Informix, Interbase, Ingres II, Microsoft SQL Server, mSQL, MySQL, Oracle, Ovrimos SQL Server, PostgreSQL, SESAM и Sybase. К нереляционным базам, относящимся к сфере действия PHP, относятся dBase, filePro, HyperWave, DBM-семейство баз данных, состоящих из плоских файлов. PHP также включает поддержку ODBC, поэтому даже если ваша любимая база данных не входит в приведенный выше список, то с ней можно работать при помощи средств PHP. Если требуемые ресурсы для хранения данных невелики и нет необходимости обслуживать много пользователей, то, вероятно, простые текстовые файлы смогут заменить базу данных. Это обсуждается в рецепте 10.1. Для текстовых файлов не требуется специального программного обеспечения баз данных, но они подходят только для основных приложений, работающих с небольшой интенсивностью. Текстовые файлы не очень хороши для работы со структурированными данными; если данные подвержены значительным изменениям, то хранение их в простых файлах неэффективно по сравнению с базой данных.
Статьи раздела '10. Доступ к базам данных':
Автоматическое присваивание уникальных значений идентификаторов
Задача Необходимо создать возрастающую последовательность уникальных идентификаторов – целых чисел. Например, требуется присвоить уникальные идентификаторы пользователям, договорам или другим объектам при внесении их в базу данны...
Выполнение запросов к базе данных SQL
Задача Необходимо извлечь некоторую информацию из базы данных. Решение Сначала вызовите функцию DB::query() из PEAR DB для посылки SQL-запроса в базу данных, а затем – функцию DB_Result::fetchRow() или функцию DB_Result::fetc...
Извлечение строк без цикла
Задача Необходимо найти короткий путь выполнения запросов и извлечения данных. Решение В случае PEAR DB для извлечения первой (или единственной) строки из запроса используйте метод DB::getRow(): $row = $dbh->getRow("SELECT...
Кэширование запросов и результатов
Задача Требуется исключить повторный запуск потенциально ресурсоемких запросов в базу данных, если их результаты не изменялись. Решение Используйте пакет PEAR Cache_DB. Он предоставляет в качестве оболочки уровня абстракции б...
Модификация данных в базе данных SQL
Задача Необходимо добавлять, удалять или изменять данные в SQL-базе данных. Решение Для посылки запросов INSERT, DELETE или UPDATE в PEAR DB предназначена функция DB::query(): $dbh->query("INSERT INTO family (id,name) VALU...
Определение количества строк, возвращенных запросом
Задача Требуется узнать, какое количество строк возвратил запрос SELECT, или сколько строк были изменены запросом INSERT, UPDATE или DELETE. Решение Количество строк, возвращенных запросом SELECT, определяется с помощью метод...
Постраничный вывод большого количества записей
Задача Необходимо отобразить на странице большой набор данных и обеспечить ссылки, позволяющие перемещаться по этому набору данных. Решение Здесь нужен PEAR класс DB_Pager: require 'DB/Pager.php'; $offset = intval($_REQUE...
Преобразование кавычек в еscapе-последовательности
Задача Необходимо сделать текстовые или двоичные данные безопасными для запросов. Решение Напишите все запросы с символами-заместителями и передайте значения в массиве для замещения этих символов: $sth = $dbh->query('UPDAT...
Программа: Хранение сообщений форума, разбитых на темы
Сохранение и извлечение сообщений, относящихся к различным темам (разделенных на потоки), требует особой осторожности при отображении тем в определенном порядке. Определение потомка каждого сообщения и построение дерева отношений ...
Программное создание запросов
Задача Необходимо создать запрос INSERT или UPDATE из массива, составленного из имен полей. Например, требуется вставить нового пользователя в базу данных. Вместо того чтобы жестко запрограммировать каждое поле информации о польз...
Работа с базами данных DBM
Задача Необходима более устойчивая и масштабируемая технология хранения простых данных, чем текстовых файлов. Решение Для доступа к базе данных типа DBM следует использовать уровень абстракции DBA: $dbh = dba_open('fish.db...
Работа с базами данных, состоящих из текстовых файлов
Задача Требуется найти простой способ хранения информации в промежутках между выполнением запросов. Решение Используйте текстовый файл с необязательной блокировкой для предотвращения конфликтов. Можно хранить данные в любом п...
Регистрация отладочной информации и ошибок
Задача Необходимо получить доступ к информации, помогающей в устранении проблем. Например, если запрос завершен неудачно, то требуется просмотреть сообщения об ошибках, возвращенных базой данных. Решение Для исследования резу...
Соединение с базой данных SQL
Задача Необходимо получить доступ к SQL-базе данных. Решение Это делается при помощи метода connect() из PEAR DB: require 'DB.php'; $dsn = 'mysql://david:foo!bar@localhost/test'; $dbh = DB::connect($dsn); if (DB::isErro...
Эффективное повторение запросов
Задача Необходимо несколько раз повторить выполнение одного и того же запроса, каждый раз подставляя новые значения. Решение В PEAR DB определите запрос с помощью функции DB::prepare(), а затем выполните запрос, вызвав функци...

Страницы: 1