Лабораторная работа 10
ИСПОЛЬЗОВАНИЕ ЯЗЫКА PHP ДЛЯ ДОСТУПА К БАЗАМ ДАННЫХ
Цель работы
Ознакомиться с базовыми конструкциями языка PHP с целью написания с их использованием простейших PHP-программ доступа к базам данных.
Содержание работы и методические указания к ее выполнению
Для выполнения работы необходимо
Язык РНР - это действующий на стороне сервера встраиваемый в HTML язык, имеющий синтаксис, близкий к языку Си. Язык РНР дает возможность вставлять в файлы HTML инструкции языка PHP для создания динамического содержания. Эти инструкции обрабатывает препроцессор-интерпретатор РНР и заменяет их тем содержимым, которое производит этот код. PHP-программа может целиком состоять из конструкций языка PHP, а может быть смесью конструкций языков PHP и HTML. Стандартное расширение файла с PHP-программой - php.
Одним из распространенных применений РНР является работа с базами данных. Для целого ряда баз данных РНР имеет собственную поддержку, а другие доступны через ODBC-функции РНР. При вызове PHP-программы URL-адрес должен содержать номер порта, через который работает PHP:
html://fpm.ami.nstu.ru:81/~pmxxyy/t1.php
К особенностям языка PHP относятся:
Одна из наиболее удобных особенностей PHP - это способность автоматически передавать значения переменных из HTML-форм в переменные PHP. PHP автоматически генерирует массивы $_POST, $_GET, $_REQUEST и другие, имена элементов которых совпадают с именами объектов в HTML-форме и содержащих значения данных объектов. Массивы эти ассоциативные, т.е. если в форме присутствовала переменная "a", то она будет передана как $_POST["a"], $_GET["a"] или $_REQUEST["a"] соответственно. В результате отпадает необходимость в выполнении рутинного преобразования, связанного с разбором последовательности
имя=значение&имя1=значение1&...&имяN=значениеN
Для связи с любой из СУБД РНР в своем наборе имеет ряд функций, которые очень похожи между собой и имеют одинаковую логику работы и аналогичные параметры.
В приведенной ниже таблице представлен минимальный набор функций, необходимых для написания PHP-программ, общающихся с СУБД PostgreSQL.
1. | resource Pg_connect (строка_соединения) | - cоздать соединение с сервером PostgreSQL |
. | Входные параметры: |
Строка,содержащая параметры соединения (адрес сервера, порт, имя базы данных, имя пользователя, пароль и пр.) Пример: $dbconn = pg_connect ("host=fpm2 port=5432 dbname=students user=pm2101 password=pass"); |
. | Возвращаемое значение: | идентификатор соединения, если соединение прошло успешно, и FALSE в противном случае. |
2. | resource Pg_query (id_соединения, строка_запроса) | - выполнить запрос к базе |
. | Входные параметры: |
id_соединения - идентификатор соединения; строка_запроса - строка SQL-запроса; |
. | Возвращаемое значение: | Результат в виде ресурса или FALSE |
3. | array Pg_fetch_row(resource результат_запроса, int номер_строки) | - получить строку запроса как нумерованный массив |
array Pg_fetch_assoc (resource результат_запроса, int номер_строки) | - получить строку запроса как ассоциативный массив | |
. | Входные параметры: |
результат_запроса - идентификатор результата, возвращенный функцией Pg_query() (только для запросов типа select); номер_строки - целое число. |
. | Возвращаемое значение: | строка таблицы базы данных, возвращаемая как массив. |
4. | string current (array row) | - получить очередное поле из строки таблицы базы данных. |
. | Входные параметры: | array row- строка таблицы базы данных, возвращенная функцией ifx_fetch_row(). |
. | Возвращаемое значение: | очередное поле строки таблицы. |
5. | string next (array row) | - получить следующее поле из строки таблицы базы данных. |
. | Входные параметры: | array row - строка таблицы базы данных, возвращенная функцией ifx_fetch_row(). |
. | Возвращаемое значение: | следующее поле строки таблицы. |
6. | int reset( array$row) | - перейти в начало строки. |
. | Входные параметры: | array row - строка таблицы базы данных, возвращенная функцией ifx_fetch_row(). |
. | Возвращаемое значение: | нулевая позиция строки результата. |
7. | string key( array$row) | - перейти в начало строки. |
. | Входные параметры: | array row - строка таблицы базы данных, возвращенная функцией ifx_fetch_row(). |
. | Возвращаемое значение: | имя очередного поля строки результата. |
8. | int Pg_affected_rows (resource result_id) | - получить число столбцов, обработанных запросом |
. | Входные параметры: | result_id - результат, возвращенный функцией Pg_query(). |
. | Возвращаемое значение: | Возвращается число столбцов, обработанных запросом, ассоциированных с result_id. Для вставок, обновлений и удалений - это реальное количество обработанных столбцов. Для выборок - ожидаемое количество. |
9. | bool pg_free_result (resource result_id) | - освободить ресурсы запроса |
. | Входные параметры: | result_id - результат, возвращенный функцией Pg_query(). |
. | Возвращаемое значение: | Освобождает ресурсы, занятые запросом с идентификатором результата result_id. Возвращает 0 в случае ошибки. |
10. | bool pg_close ( resource link_identifier) | - закрыть соединение с PostgreSQL |
. | Входные параметры: | link_id - идентификатор соединения; |
. | Возвращаемое значение: |
Общая схема написания PHP-программы, выполняющей взаимодействие с базой данных, мало отличается от структуры CGI-скрипта, написанного любыми другими средствами, разница состоит лишь в используемых средствах:
При этом остаются актуальными все замечания, сделанные в предыдущей лабораторной работе относительно установки переменных окружения и обеспечения мер безопасности при работе с базой данных.
Последовательность выполнения лабораторной работы
Требования к разрабатываемой программе
Разрабатываемые программы должна удовлетворять следующим требованиям:
Варианты заданий
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Контрольные вопросы