- •Лабораторна робота №3 Мова рнр
- •3.1. Теоретичні відомості
- •Что происходит со сценариями php при передаче клиентского запроса?
- •1. Анализ http-запроса.
- •Типы данных
- •Строковый тип
- •Операции
- •Управляющие операторы
- •Операторы break и continue
- •Массивы
- •Использование функций
- •Передача параметров в функции
- •SРабота с базами данных
- •Доступ к базе данных MySql с использованием языка рнр
- •3.2. Порядок виконання роботи
- •3.3. Завдання
- •2.4. Контрольні запитання
Передача параметров в функции
Список параметров может состоять из нескольких переменных, разделенных запятыми. Как и в других языках программирования, параметры, которые указываются при вызове функции, называются фактическими (actual parameter), а параметры, присутствующие в определении функции, — формальными (formal parameter). В качестве фактического параметра можно использовать любое выражение. Формальный параметр всегда должен представлять собой имя переменной.
Определение функции с тремя параметрами может выглядеть следующим образом.
function A($arg1, $arg2, $arg3)
{...}
А вызвать эту функцию можно так.
A(2, $b, $c);
Такой способ передачи параметров функции называется передачей параметров по значению. Это означает, что параметры функции становятся ее локальными переменными. Действия над ними не оказывают никакого влияния на глобальные переменные, значения которых были переданы в качестве фактических параметров. Например,
<?php
$a = 5; // создание глобальной переменной $a
function Inc($a){
$a++; // функция модифицирует значение локальной переменной
return $a; // и возвращает ее значение
}
$b = Inc($a); // еще одна переменная $b
echo “$a $b”; // будут выведены значения 5 и 6, поскольку функция Inc работала не с глобальной переменной $a, а с ее копией
?>
SРабота с базами данных
Язык РНР поддерживает различные системы баз данных, что является одним из существенных его преимуществ. Язык РНР обеспечивает поддержку следующих баз данных.
Adabas D |
InterBase |
Solid |
DBase |
mSQL |
Sybase |
Empress |
MySQL |
Velocis |
FilePro |
Oracle |
Unix DBM |
Informix |
PostgreSQL |
Microsoft SQL Server |
ODBC |
|
|
Для каждой из поддерживаемых баз данных в РНР существует соответствующий программный интерфейс API, обеспечивающий связь с конкретной системой. Несмотря на то, что для каждой базы данных существует свой программный интерфейс, существует типичная модель работы с базой данных. Приведем псевдокод, иллюстрирующий общую процедуру поиска и извлечения данных из некоторой базы.
<?php
Подключение к СУБД()
Инструкции SQL()
Отключение от СУБД()
?>
Рассмотрим пример взаимодействия РНР и MySQL.
Доступ к базе данных MySql с использованием языка рнр
Функция РНР mysql_connect позволяет сценарию подсоединиться к серверу MySQL. Эта функция имеет три параметра, которые все являются необязательными. Первый параметр задает узел, на котором запущен сервер MySQL. По умолчанию значением этого параметра является localhost (имя компьютера, на котором выполняется сценарий). Второй параметр задает имя пользователя MySQL. По умолчанию таким именем является имя пользователя, в контексте которого был запущен процесс РНР. Третий параметр задает пароль для доступа к базе данных. По умолчанию используется пустой пароль. Например,
$db = mysql_connect();
Конечно, операция соединения с базой данных может завершиться неудачно. В этом случае возвращается значение false (а не ссылка на базу данных). Соединение с базой данных можно разорвать с помощью функции mysql_close.
При запуске сервера MySQL из командной строки нужно выбрать текущую базу данных, с которой будет связан фокус. Это же необходимо осуществить и при взаимодействии с MySQL из сценария РНР. Для выбора базы данных, с которой будет осуществляться взаимодействие, предназначена функция mysql_select_db.
mysql_select_db(“cars”);
Серверу MySQL запросы передаются с помощью функции mysql_query. Например,
$query = “SELECT * from Slavuta”
$result = mysql_query($query);
Возвращаемое функцией mysql_query значение используется для оценки результатов, полученных при выполнении запроса SQL. В большинстве случаев необходимо определить количество строк результирующих данных. Это можно осуществить с помощью функции mysql_num_rows, параметром которой является результат, предоставленный функцией mysql_query. Например,
$num_rows = mysql_num_rows($result);
Отдельные строки набора данных, полученного при выполнении SQL-запроса, можно получить различными способами. Например, можно воспользоваться функцией mysql_fetch_array, которая возвращает хеш-код следующей строки. Если записей больше нет, то возвращается значение false. Затем значения полей могут быть получены путем совместного использования имени столбца таблицы и хеш-кода текущей строки результирующего множества. Например, если в результирующем наборе данных содержатся поля Salon и Salon_ID, то всю полученную информацию можно представить в виде кода HTML следующим образом.
$num_rows = mysql_num_rows($result);
for($row_num = 0; $row_num < $num_rows; $row_num++)
{
$row = mysql_fetch_array($result);
print “<p> Result row number”.($row_num+1).“. Salon_ID: ”;
print htmlspecialchars($row[“Salon_ID”]);
print “ Salon: ”;
print htmlspecialchars($row[“Salon”]);
print “</p>”;
}
Для извлечения записей из результирующего набора данных можно использовать и функцию mysql_fetch_row. Разница состоит в том, что функция mysql_fetch_array возвращает смешанный ассоциативный массив, элементы которого упорядочены как по именам полей (строковым ключам), так и по числовому индексу, а функция mysql_fetch_row возвращает нумерованный массив.