Итак, мы вплотную подошли к работе с баззами данных. Для начала определимся с парой терминов:
СУБД (Система Управление Баззами Данных) - набор программ и утилит, предназначенных для организации и ведения базы данных.
SQL - Structured Query Language -- язык структурированных запросов. SQL - не является языком программирования, правильнее будет звучать
язык работы с базами данных.
База Данных (БД) - совокупность структуированных данных, которые хранятся в виде таблиц.
Таблица - набор данных организованный в виде двумерного массива. Для доступа к данным таблицы используются имена колонок (столбцов, полей)
и номер записи (строки). Приведем пример таблицы:
PHP:
скопировать код в буфер обмена
Номер | Название | Цена | Остаток
-------+------------+-------+---------
1 | Процессор | 200 | 4
2 | Видеокарта | 120 | 1
3 | Монитор | 200 | 2
4 | Мышь | 6 | 10
Как видно из примера, у нашей таблицы четыре колонки: Номер, Название, Цена и остаток, и 4 строки (записи).
Несколько таких таблиц являются частью базу данных. Более точное определение Базы данных дадим позже, когда узнаем немного больше о Базах Данных и SQL. Также при изуцении мы будем вводить новые понятия и определения.
Теперь попробуем связать Базы данных и PHP.
Поскльку существует несколько вариантов СУБД, каждый вибирает ту, которыя ему ближе и роднее. По сути у каждой свои плюсы и свои минусы.
Свои задачи они все выполняю очень хорошо. Здесь будем учится работе с системой PostgreSQL и основам SQL, поскольку независимо от СУБД,
SQL один. И большенство разработчиков СУДБ поддерживаются стандартов.
Установка:
Процесс установки СУБД PostgreSQL описан в официальной документации, прилагаемой к дистрибутиву.
Для связи PHP и POstgreSQL необходимо в файле настроек PHP (
php.ini) раскоментировать строку "
extension=php_pgsql.dll".
Для любой работы с БД необходимо установить соединение с СУБД. В PHP для соединение с СУБД PostgreSQL используется функция pg_connect.
Установим соединение на локальной машиной (компьютер на котором производим подключение и на котором стоит наша СУБД) с базой ourdatabase,
После выполнения кода переменная $connection будет содержать ссылку на наше соединение, которе мы и будем использовать для работы.
Дальнейшее объяснение тесно связано со знанием и понимание SQL (псевдоязык работы с БД). Но поскольку мы только начинаем изучать PHP и БД,
то попробуем освоить одновременно некие азы, наобходимые для минимально нормально работы.
Создание таблиц.
В любой БД должны быть таблицы, с которыми мы бдем работать. Для их создания используется
SQL-запрос (команда для выполнение СУДБ):
CREATE TABLE name (col1 type, col2 type, ... );
name - имя будущей таблицы. Не рекомендуется наывать таблицы зарезервированными именами, например: date, text, varchar, integer и тд.
col1, col2 .... - имена колонок нашей таблицы.
type - тип данных, которые будут храниться в колонках. Основные типы данных, найболее часто используемые в работе:
smallint, integer, bigint - целые типы. отличаются друг от друга пределами своих значений. Один и тот же тип данных может иметь разные пределы, это зависит от операционной системы.
text - текстовый тип, предназначен для хранение больших текстов неопределенной длины.
varchar(size) - символьный тип, представляет собой массив из size символов.
boolean - логический тип. Может принимать только два значения: true (истина, 1) и false (ложь, 0).
timestamp with timezone - штамп времени. испольщуется для хранение даты и времени с большой точностью.
так же есть значение
NULL - оно используется для пустого значения любого типа.
Это только малая часть всех поддерживаемых типов данных, но их нам пока что хватит.
Теперь попробудем написать запрос для создания таблицы из примера выше, но назавния колонок сделам латиницей:
CREATE TABLE sklad (no smallint, name varchar(100), price integer, last integer);
Запрос готов, но как его передать с помощью PHP? Для этого есть функция pg_query:
CODE (
text):
скопировать код в буфер обмена
$result=pg_query($connection,"CREATE TABLE sklad (no smallint, name varchar(100), price integer, last integer);");
$result - ссылка на данные с результатом запроса. об этом чуть позже.
Итак, таблица создана. Теперь осталось ее наполнить данными. Для этого существует конструкция INSERT:
val1,val2, ... - значение полей добавляемой записи, количество значений, для данного вида запроса, должно быть равно количеству
полей в таблице.
Как видно из примера, все строковые и символьные типы, а так же несколько специальных (inet, macaddr), должны заключаться в одинарные
Теперь давайте представим, что наша таблица состоит из 10, а может 20 полей, а нам надо добавить строку с заполнеными всего 2-5. Что делать?
Неужели указывать кучу пустых значений? Конечно, нет! Для этого используется конструкция вида:
Здесь сразу после названия таблицы в скобках пишем названия полей, для которых мы будем устанавливать значения. В этом случае количество
значений должно совпадать с оличеством заявленных полей. Например:
Мы добавили запись с установленными значениями no=3 и name='Монитор'. Остальные поля у нас оказались со значением NULL.
Теперь пора отправить этот запрос с помощью уже известной нам функции pg_query: