Лабораторне заняття 11. SQL-запити на отримання даних. Прив’язка функціоналу PHP до HTML-сторінки
Мета роботи: ознайомитися з можливостями взаємодії PHP та MySQL для отримання записів з бази даних та виведення їх на сторінку.
Теоретичні відомості
PHP – скриптова мова програмування, створена для генерації HTML-сторінок на стороні веб-сервера. PHP є однією з найпоширеніших мов, що використовуються у сфері веб-розробок (разом із Java, .NET, Perl, Python, Ruby). PHP підтримується переважною більшістю хостинг-провайдерів.
Всі PHP-сценарії оформлюються у вигляді блоків коду. Ці блоки можуть бути поміщені в HTML-код, але відділені від нього відповідними обмежувачами. PHP-код в HTML повинен знаходитись між тегами <?php та ?>:
<html>
<head>
<title>Тестуємо PHP</title>
</head>
<body>
<?php echo 'Hello, world!'; ?>
</body>
</html>
Інструкції в PHP відокремлюються символом ;. Перед закінченням скрипту (перед тегом ?>) крапку з комою ставити необов'язково.
MySQLi (MySQL Improved) – розширення драйвера реляційної бази даних, який використовується в мові програмування PHP. На відміну від попередньої версії має ряд поліпшень та рекомендується для використання розробниками PHP замість класичного mysql.
Для отримання даних з бази даних MySQL використовується мова запитів SQL та функції мові PHP. Для початку необхідно здійснити підключення до існуючої бази даних. Для цього використовується функція mysqli_connect:
mysqli_connect(host, user, password, dbname);
Дана функція встановлює з’єднання з базою даних та приймає наступні параметри:
- host – визначає ім’я хоста або IP-адресу сервера, де встановлена база даних. Найчастіше використовується значення localhost, але краще переглянути цю інформацію в хостинг-панелі;
- user – ім’я користувача MySQL;
- password – пароль до бази даних;
- dbname – ім’я бази даних.
У випадку успішного з’єднання, функція повертає значення типу Об’єкт, в іншому випадку – значення false. Варто це враховувати та робити перевірку, перш ніж переходити до наступних дій.
Після підключення до бази даних, можна отримувати даті з потрібної таблиці. Для цього необхідно сформувати SQL-запит на вибірку:
SELECT column_list FROM table_name
Мова SQL не чутлива до регістру літер, однак часто оператори записуються великими літерами, щоб виділити їх в запиті.
Оператор SELECT використовується для отримання набору даних з таблиці. Після нього потрібно вказати перелік полів, дані з яких будуть отримуватися. Далі йде ключове слово FROM та назва таблиці. Приклад запиту:
SELECT name, value FROM table1
В даному випадку було сформовано запит на отримання даних полів name та value з таблиці table1. Іноді назви таблиць чи полів можуть збігатися з ключовими словами, тому рекомендується заключати їх у зворотні лапки:
SELECT `name`, `value` FROM `table1`
Якщо потрібно вибрати всі поля з бази – замість переліку полів потрібно вказати символ *.
Для того, щоб отримати дані, відсортовані за певним полем, використовується ключове слово ORDER:
SELECT * FROM `table1` ORDER BY `name` ASC
В даному випадку дані будуть відсортовані за полем name у порядку зростання. Для сортування за спаданням використовується ключове слово DESC.
Наступний етап – отримання результатів запиту на вибірку за допомогою функції mysqli_query:
mysqli_query(link, query)
В результаті виконання функція повертає значення false, якщо запит виконати не вдалося, об’єкт mysqli_result – при виконанні запитів SELECT або true – при виконанні інших запитів.
Параметр link – ідентифікатор з’єднання, отриманий за допомогою функції mysqli_connect; query – текст запиту.
Об’єкт mysqli_result – результуючий набір даних, отриманий із запиту до бази. Фактично, це дані у вигляді таблиці (як це реалізовано в базі даних). Щоб отримати дані потрібного поля, необхідно звернутися спочатку до рядка таблиці і лише тоді – до поля та його значення. Наприклад:
for ($i = 0; $i < mysqli_num_rows($query); $i++) {
$fetch = mysqli_fetch_array($query);
echo "<li>$fatch[name]</li>";
}
В даному прикладі виводиться список значень поля name за допомогою масиву for. Кількість рядків таблиці визначається функцією mysqli_num_rows.
Функція mysqli_fetch_array отримує рядок з вказаного набору даних та формує з них асоціативний масив (який записується в змінну $fetch). При повторному виклику функції буде отримано наступний рядок. Тепер можна звертатися до елементів масиву за іменами полів ($fatch[name]).
За допомогою функції echo можна вивести як значення полів так і елементи оформлення HTML, що надає змогу формувати потрібний вигляд веб-сторінки.