ИСПОЛЬЗОВАНИЕ ЯЗЫКА PHP ДЛЯ ДОСТУПА К БАЗАМ ДАННЫХ
Лабораторная работа 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 автоматически генерирует набор переменных, имена которых совпадают с именами объектов в HTML-форме и содержащих значения данных объектов.
В результате отпадает необходимость в выполнении рутинного преобразования, связанного с разбором последовательности
имя=значение&имя1=значение1&...&имяN=значениеN
Для связи с любой из СУБД РНР в своем наборе имеет ряд функций, которые очень похожи между собой и имеют одинаковую логику работы и аналогичные параметры.
В приведенной ниже таблице представлен минимальный набор функций, необходимых для написания PHP-программ, общающихся с СУБД Informix.
1. | int ifx_connect (string database, string user, string password) | - cоздать соединение с сервером Informix |
. | Входные параметры: |
Database - имя базы данных; user - имя пользователя password - пароль. |
. | Возвращаемое значение: | идентификатор соединения, если соединение прошло успешно, и равен 0 в противном случае. |
2. | int ifx_query (string query, int link_id, int cursor_type) | - выполнить запрос к базе |
. | Входные параметры: |
query - строка SQL-запроса; link_id - идентификатор соединения; cursor type - тип курсора |
. | Возвращаемое значение: | значение 1 или 0 в зависимости от успеха выполнения операции. |
3. | array ifx_fetch_row (int result_id, mixed [position]) | - получить строку запроса как массив |
. | Входные параметры: |
result_id - идентификатор результата, возвращенный функцией ifx_query() (только для запросов типа select); [position] - параметр из списка: "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" или номер. |
. | Возвращаемое значение: | строка таблицы базы данных, возвращаемая как массив. |
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 ifx_affected_rows (int result_id) | - получить число столбцов, обработанных запросом |
. | Входные параметры: | result_id - результат, возвращенный функцией ifx_query(). |
. | Возвращаемое значение: | Возвращается число столбцов, обработанных запросом, ассоциированных с result_id. Для вставок, обновлений и удалений - это реальное количество обработанных столбцов. Для выборок - ожидаемое количество. |
9. | int ifx_free_result (int result_id) | - освободить ресурсы запроса |
. | Входные параметры: | result_id - результат, возвращенный функцией ifx_query(). |
. | Возвращаемое значение: | Освобождает ресурсы, занятые запросом с идентификатором результата result_id. Возвращает 0 в случае ошибки. |
10. | int ifx_close (int [link_identifier]) | - закрыть соединение с Informix |
. | Входные параметры: | link_id - идентификатор соединения; |
. | Возвращаемое значение: | закрывает соединение с Informix. Если идентификатор ссылки не указан, предполагается последнее установленное соединение. |
Общая схема написания PHP-программы, выполняющей взаимодействие с базой данных, мало отличается от структуры CGI-скрипта, написанного любыми другими средствами, разница состоит лишь в используемых средствах:
При этом остаются актуальными все замечания, сделанные в предыдущей лабораторной работе относительно установки переменных окружения и обеспечения мер безопасности при работе с базой данных.
Последовательность выполнения лабораторной работы
Требования к разрабатываемой программе
Разрабатываемые программы должна удовлетворять следующим требованиям:
Варианты заданий
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Контрольные вопросы