Введення в базу даних Sqlite

24

Від автора: при розробці веб-додатків завжди виникає питання, де і в якому вигляді зберігати дані. Звичайно ж їх можна зберігати в базі даних, або в текстових файлах використовуючи спеціальні роздільники. Але що робити, якщо Ви хочете зберігати інформацію в базі даних, а додаток у Вас дуже просте. У цьому випадку нераціонально використовувати цілий сервер бази даних MySql.

В уроці ми з Вами познайомимося ще з однією базою даних, дуже швидкої і дуже простий, якій не потрібен окремий сервер для роботи.

План уроку

1. Введення

2. Підключення модуля бази даних sqlite

3. Створення бази даних і таблиць

4. Заносимо дані в базу даних

5. Висновок інформації з бази даних

Деталі підручника

Тема: PHP

Складність: Середня

Урок: Відео (.mp4)

Час: 01:38:51

Розмір архіву: 110 Mb

Введення в базу даних SqliteВведення в базу даних Sqlite

1. Введення.

Для початку давайте визначимося, що ж таке база даних Sqlite і які в неї переваги перед базами даних серверного типу.

Sqlite – це вбудована реляційна база даних, з відкритим вихідним кодом. Тобто вона не використовує звичну нам модель роботи бази даних клієнт-сервер і не є окремим працюючим процесом. Наприклад, база даних Mysql. Іншими словами движок Sqlite стає як би частиною нашого веб-додатки. При такому підході база даних Sqlite (з усіма таблицями) являє собою звичайний текстовий файл, який ви можете розташувати в зручному для Вас місці.

Тепер давайте розглянемо основні переваги Sqlite.

Самодостатність – базі даних Sqlite не потрібен окремий сервер для роботи. Движок Sqlite вбудовується прямо в додаток і потребує лише доступ до файлів.

Простота встановлення та налаштування нової бази дуже проста і не потребує втручання системних адміністраторів.

Встроєний – движок Sqlite повністю вбудований в PHP 5 і не потрібна установка додаткового програмного забезпечення.

Надає як процедурний, так і об’єктно-орієнтований інтерфейс для роботи.

Висока продуктивність – двигун споживає дуже мало ресурсів і не витрачається час на відправку даних до окремого виділеного сервера.

Sqlite чудово підходить для веб-додатків, коли основна маса запитів являє собою запити на читання також дуже добре підійде для невеликих проектів, які в подальшому Ви збираєтеся розвивати. Так як Sqlite працює з такими ж SQL запитами, що і бази даних серверного типу а це дає нам можливість легко перейти на іншу базу даних, не вносячи кардинальних змін у логіку веб-додатки (особливо використовуючи розширення PDO).

Отже, давайте приступимо до вивчення бази даних sqlite. Я пропоную створити невеликий простенький сайтик на її основі, тим самим ми на практиці можемо навчитися з нею працювати.

2. Підключення модуля бази даних sqlite

Для початку необхідно переконатися, що модуль бази даних sqlite, підключений у файлі php.ini. Для цього відкрийте цей файл (для тих, у кого встановлений Денвер, файл знаходиться за адресою \usr\local\php5\php.ini) та знайдіть рядок:

;extension=php_sqlite.dll

Далі просто приберіть крапку з комою на початку рядка, збережіть зміни у файлі і перезавантажте сервер Apache (або Денвер), у вас рядок повинна бути ось такого вигляду:

На реальних серверах (хостингах) цей модуль вже поключен.

3. Створення бази даних і таблиць.

Насамперед необхідно створити базу даних і необхідні таблиці в ній. Для цього давайте створимо файл config.php, в якому створимо константу DB_NAME для зберігання імені бази даних. Ось код файлу config.php:

Як я і говорив на початку, база даних sqlite – це звичайний текстовий файл (спеціально відформатований), тому вказуючи ім’я бази даних, не забувайте вказувати розширення, в моєму випадку це .db, але це не принципово, розширення можна ставити яке завгодно.

Тепер давайте створимо файл install.php, в якому і створимо базу даних з необхідним набором таблиць. Для цього відкриваємо в файлі PHP –теги і починаємо кодувати. Для початку підключимо файл конфігурації config.php:

include ‘config.php’;

Потім створимо базу даних, використовуючи функцію sqlite_open(‘ім’я бази даних’). Якщо бази даних ще не існує, то ця функція створює базу даних з іменем переданим їй параметром, відкриває її для роботи і повертає дескриптор підключення (в нашому випадку дескриптор зберігся в змінну $db). Якщо ж база даних існує функція просто відкриває базу даних і повертає дескриптор підключення. Нижче наводжу код, необхідний для створення бази даних:

$db = sqlite_open(DB_NAME);
if(!$db) {
exit(‘ERROR’.sqlite_error_string(sqlite_last_error($db)));
}
echo ‘База даних ‘.DB_NAME. ‘ створена
‘;

Як Ви бачите, я після виклику функції sqlite_open(ім’я бази даних), зробив невелику перевірку – на те не виникли при створенні бази даних помилки. Якщо виникла помилка, то відбувається вихід з скрипта з виведенням помилки тексту на екран.

Для виведення помилок бази даних sqlite на екран необхідно використовувати дві функції. Перша це функція: sqlite_last_error(дескриптор підключення до бази), яка повертає код помилки. Друга — sqlite_error_string(код помилки), яка розшифровує код помилки, і повертає безпосередньо текст помилки.

Тепер давайте перейдемо в браузер і запустимо файл install.php. На екрані з’явилася рядок — База даних mydb.db створена. Тепер подивіться в папку де розташовується наш скрипт і Ви побачите що був створений текстовий файл База mydb.db – це і є наша база даних.

Тепер необхідно створити дві таблиці: таблицю menu для зберігання пунктів меню і таблицю articles для зберігання, якихось статей нашого міні-сайту. Першим ділом створимо таблицю menu. Ось код для її створення:

// запит до бази даних
$sql = «CREATE TABLE articles
(
id_articles INTEGER PRIMARY KEY,
name_articles,
text_articles
);
«;
//виконуємо запит
$result = sqlite_query($db,$sql);
if(!$result) {
exit(‘ERROR’.sqlite_error_string(sqlite_last_error($db)));
}
else {
echo ‘Таблиця articles створена
‘;
}

Як Ви бачите, насамперед створюємо sql запит до бази даних. Він дуже схожий на запит до бази даних MySql. Але є відмінності в оголошенні типів даних, які повинні зберігається в стовпцях таблиці. У найпростішому випадку типи даних можна взагалі не вказувати, при цьому дані будуть вставлені рядки. База даних sqlite версії 2 мала всього кілька типів даних, а саме INTEGER та текстовий тип даних для зберігання великих обсягів тексту.

У більш старших версіях, починаючи з версії 2.7.0 були введені різні типи текстових полів, такі як BLOB, CHAR, CLOB, TEXT, у версії 3.0 створені спеціальні класи даних NULL, INTEGER, REAL,TEXT, BLOB, які включають в себе додаткові типи даних.

Але в будь-якому разі типи даних в базі даних sqlite – декларативні, тобто якою б не був вказаний стовпцю клас – в нього можна покласти будь-які дані, як текстові, так і числові. Виняток становить тільки поля, у яких призначений тип даних INTEGER PRIMARY KEY, — цей запис означає, що поле є первинним ключем і тип даних у ньому обов’язково повинен бути числовим. При цьому поле автоматично отримує властивість AUTOINCREMENT.

Після створення запиту до бази даних, необхідно його виконати. Для цього застосовуємо функцію sqlite_query(дескриптор підключення, запит). Ця функція аналогічна функції mysql_query() – тобто вона виконує запит до бази даних і повертає результат запиту. Першим параметром їй передаємо дескриптор підключення до бази даних, другим – безпосередньо сам запит. Потім виконуємо стандартну перевірку на наявність помилок.
Давайте перейдемо в браузер і подивимося що у нас вийшло. Після оновлення сторінки на екрані з’являється рядок – Таблиця articles створена. Значить все правильно.

Тепер створимо другу таблицю menu. Ось код для її створення:

// запит до бази даних
$sql2 = «CREATE TABLE menu
(
id_menu INTEGER PRIMARY KEY,
name_menu,
link_menu
)
«;
//виконуємо запит
$result2 = sqlite_query($db,$sql2);
if(!$result2) {
exit(‘ERROR’.sqlite_error_string(sqlite_last_error($db)));
}
else {
echo ‘Таблиця menu створена
‘;
}

Як Ви бачите тут все аналогічно таблиці articles. Тепер давайте наведу весь код файлу install.php: