У моего предыдущего клиента была база данных о продуктах, которые они продают, и которые они использовали в автономном режиме. Но все чаще это рабочее соглашение оказывалось ограниченным. Было слишком много случаев, когда им нужно было использовать базу данных, но они находились не рядом с компьютером, где они хранили свою базу данных.
Разве для них не было бы лучше поддерживать свою базу данных, где бы они ни находились? Конечно, но как? Просто — выложи это онлайн. Кроме того, наличие базы данных о продуктах в Интернете открывает возможность использования ее в качестве основы веб-сайта для их бизнеса.
Есть еще одно преимущество в наличии онлайновой базы данных, но это немаловажно — многопользовательский доступ. То есть хранение базы данных на сервере означает, что любое уполномоченное лицо может использовать базу данных продуктов компании, используя только браузер. И все это в результате перемещения существующего файла базы данных Access из автономного в онлайн-хранилище.
Чтобы упростить переход к онлайн-базам данных, существующую базу данных Access можно сохранить без изменений и просто загрузить на подходящий хост Windows. (Хостинг для Linux тоже возможен, но это немного сложнее.) Хостинг сам по себе недостаточен, потому что вам также нужно создать интерфейс, позволяющий им читать и писать в базу данных. Создание интерфейса может показаться сложным, но это не обязательно. По сути, вы будете заменять формы, перечисленные на вкладке «Формы» в Access.
В этой статье я сосредоточусь на основных элементах PHP, которые вам понадобятся для использования существующей базы данных Access в Интернете. Еще один элемент, который является стандартным для установки Windows, — это наличие драйверов ODBC. Они необходимы для использования Access из PHP.
Front-end и Back-end
Прежде всего, давайте выясним, как будет открываться клиентская база данных Access. Обычно они используют Microsoft Access на своем ПК, возможно, дважды щелкнув значок файла базы данных. Однако, когда база данных будет в сети, они будут открывать базу данных в браузере.
Как можно использовать браузер для открытия, просмотра и редактирования базы данных Access? Ну, думайте о приложении MS Access как о пользовательском интерфейсе. Как пользовательский интерфейс, он был разработан для использования в Windows для чтения и записи файла базы данных Access. Помните, что файл базы данных Access полностью отделен от прикладного программного обеспечения MS Access. Таким образом, можно создать альтернативный интерфейс для чтения и записи в файл базы данных Access. Этот просто запускается с помощью веб-браузера.
Прежде чем приступить к изучению пользовательского интерфейса, важно помнить, что данные и пользовательский интерфейс являются различными аспектами системы. Давайте уделим немного времени укреплению ключевого аспекта использования браузера для доступа к базе данных, размещенной на сервере.
При использовании MS Access на ПК для использования базы данных Access (то есть автономной) прикладное программное обеспечение является .mdb
а файл базы данных ( .mdb
) — внутренним. Аналогично, при подключении к Интернету браузер является внешним интерфейсом, а файл базы данных — внутренним. Другими словами, отношения не изменились: они все еще являются отношениями между клиентом и сервером. Внешний интерфейс соединяется с внутренним, а внутренний хранит данные.
База данных
В примере, который я выбрал для этой статьи, мы будем использовать очень простую базу данных, которая состоит из трех таблиц: таблицы продуктов, таблицы категорий и связующей таблицы продуктов-категорий.
База данных Microsoft Access содержит все данные и определения таблиц, относящиеся к этой статье. В соответствии с передовой практикой данные разделяются на отдельные таблицы. Например, список продуктов хранится в таблице product
, а список категорий хранится в таблице category
. База данных Access является автономной, без ссылок на внешние таблицы.
Многие продукты могут относиться к любой данной категории, и любой данный продукт может относиться к более чем одной категории. Например, если цель базы данных — хранить детали серебряных предметов старины, пару серебряных запонок 19-го века можно отнести к категории 19-го века и Подарки для мужчин.
Эта взаимосвязь между данными показана схематически с помощью опции «Отношения» в Access.
То есть, между продуктами и категориями существует отношение «многие ко многим». Отсюда необходимость таблицы ссылок.
Подключение к базе данных
Перед чтением или записью базы данных необходимо установить соединение с ней. Хосты Windows имеют иерархию папок, аналогичную иерархии ПК с Windows, поэтому расположение файлов на сервере Windows, вероятно, будет иметь путь в форме C:inetpubvhostsexample.comhttpdocs
. Вы должны быть в состоянии извлечь значение пути к корневой папке вашего хоста, используя суперглобальный PHP $_SERVER["DOCUMENT_ROOT"]
. Код, необходимый для подключения к базе данных Access, будет выглядеть следующим образом:
<?php $dbName = $_SERVER["DOCUMENT_ROOT"] . "products\products.mdb"; if (!file_exists($dbName)) { die("Could not find database file."); } $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$dbName; Uid=; Pwd=;");
Успешное соединение позволит выполнять команды SQL из PHP для чтения или записи базы данных. Однако, если вы получаете сообщение об ошибке «PDOException Не удалось найти драйвер», вероятно, драйвер PDO ODBC не установлен. Используйте phpinfo()
для проверки вашей установки на наличие ссылок на PDO.
Если запись для ODBC PDO отсутствует, вам необходимо убедиться, что ваша установка включает расширение PDO и драйверы ODBC. Чтобы сделать это в Windows, раскомментируйте строку extension=php_pdo_odbc.dll
в php.ini
, перезапустите Apache и попробуйте снова подключиться к базе данных.
При установленном драйвере вывод phpinfo()
должен содержать такую информацию:
Команды SQL
Четыре основные команды, используемые в PHP, такие же, как в MS Access, а именно SELECT
, UPDATE
, INSERT
и DELETE
. Таким образом, следующие примеры SQL должны легко следовать. Если, конечно, вы обычно не используете Access Design View, в котором вам может понадобиться курс повышения квалификации по SQL.
ВЫБЕРИТЕ ряд (ы)
Предположим, вам нужно узнать цену на конкретный продукт. Это легко достигается с помощью идентификатора продукта для выбора одного поля из таблицы product
.
<?php $sql = "SELECT price FROM product"; $sql .= " WHERE id = " . $productId; $result = $db->query($sql); $row = $result->fetch(); $productPrice = $row["price"];
После выбора категории из выпадающего списка вы можете использовать идентификатор категории для запроса таблицы ссылок, чтобы получить список продуктов, которые были назначены для этой категории.
<?php $sql = "SELECT p.name, p.description, p.price"; $sql .= " FROM product p, product_category pc"; $sql .= " WHERE p.id = pc.productId"; $sql .= " AND pc.category_id = " . $categoryId; $sql .= " ORDER BY name"; $result = $db->query($sql); while ($row = $result->fetch()) { $productName = $row["name"]; $productDescription = $row["description"]; $productPrice = $row["price"]; }
ОБНОВЛЕНИЕ строки
Используя данные, предоставленные в форме HTML, вы можете обновить информацию о продукте.
<?php $sql = "UPDATE product"; $sql .= " SET description = " . $db->quote($strDescription) . ","; $sql .= " price = " . $strPrice . ","; $sql .= " sale_status = " . $db->quote($strDescription); $sql .= " WHERE id = " . $productId; $db->query($sql);
Проблемный персонаж, которого следует опасаться, — это апостроф. Апостроф не может быть сохранен в таблице доступа просто как апостроф, скорее он должен быть удален другим апострофом. Это гарантирует, что Access знает, что он должен храниться как апостроф, а не как апостроф, ограничивающий строку. К счастью, библиотека PDO PHP содержит метод, который подготавливает строки для хранения в базе данных, quote()
.
Вставить строку
Вы можете добавить новый продукт в таблицу product
, используя данные, введенные в форме HTML.
<?php $sql = "INSERT INTO product"; $sql .= " (name, description, price, sale_status) "; $sql .= "VALUES (" . $db->quote($strName) . ", " . $db->quote($strDescription) . ", " . $strPrice . ", " . $db->quote($strStatus) . ")"; $db->query($sql);
УДАЛИТЬ строку
Если продукт был введен по ошибке или больше не нужен в базе данных, вы можете удалить его из таблицы product
.
<?php $sql = "DELETE"; $sql .= " FROM product"; $sql .= " WHERE id = " . $productId; $db->query($sql);
Можно утверждать, что удаление продукта маловероятно, так как лучше иметь соответствующий статус, чтобы указать, что продукт был продан или был заархивирован, и т. Д. Таким образом, детали будут сохранены для дальнейшего использования.
Резюме
Выше приведены основные сведения о том, что необходимо для использования базы данных Access из PHP. Я надеюсь, что это показывает, как мало PHP требуется для основополагающего чтения и записи базы данных Access, и как легко понять эти основные элементы взаимодействия с базой данных с помощью PHP.
Изучая приведенный выше SQL, становится ясно, что для доступа PHP к PHP требовалось всего три команды ODBC PDO, а именно: $db = new PDO()
, $db->query()
, $db->query()
и $db->quote()
. Конечно, это самый минимум. Более сложные базы данных и более сложные веб-сайты потребуют больше SQL, чем показано в этой статье, но теперь у вас есть основы для того, чтобы разместить свою собственную — или свою клиентскую — базу данных доступа в Интернете с помощью PHP.
Комментарии к этой статье закрыты. Есть вопрос по PHP? Почему бы не спросить об этом на наших форумах ?