- •Лабораторна робота №3 Мова рнр
- •3.1. Теоретичні відомості
- •Принципи обробки сценаріїв php
- •1. Аналіз http-запиту.
- •Типи даних
- •Строковий тип
- •Операції
- •Керуючі оператори
- •Оператори break і continue
- •Використання функцій
- •Передача параметрів у функції
- •Робота з базами даних
- •Доступ до бази даних MySql з використанням мови рнр
- •3.2. Порядок виконання роботи
- •3.3. Завдання
- •3.4. Контрольні запитання
Робота з базами даних
Мова РНР підтримує різні системи баз даних, що є однією з істотних її переваг. РНР забезпечує підтримку наступних баз даних.
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 повертає нумерований масив.