Приклад ООП з PHP та MySql
Як ви зрозумієте, що нам потрібно, ви легко створите скелет для нашого класу. Для початку нам треба включити до класу основні функції для роботи з MySQL. Потрібні такі функції.
Нижче наведено визначення нашого класу. Зауважте, що всі методи, які я створив, використовують ключове слово public .
Функція connect()
Ця функція буде досить простою, але перш ніж писати функцію, нам потрібно буде визначити кілька змінних. Змінні мають бути доступні лише в межах класу, тому перед кожною змінною стоїть ключове слово private (закритий). Усі змінні (хост, ім'я користувача, пароль, ім'я бази даних) використовуються для з'єднання з базою даних MySQL. Після цього ми зможемо створити простий MySQL запит до бази даних. Звичайно, як програмісти, ми повинні чекати від користувачів все, що завгодно, і виходячи з цього, нам необхідно вжити певних запобіжних заходів. Ми можемо перевірити: якщо користувач вже підключений до бази даних, то відповідно йому не потрібно повторно підключатися до БД. В іншому випадку ми можемо використовувати облікові дані користувача для підключення.
Як бачите вище, ми використовуємо базові функції MySQL та робимо невелику перевірку на помилки, щоб все йшло за планом. Якщо користувач підключився до БД, ми повертаємо true, інакше повертаємо false. Як додатковий бонус встановлюємо змінну ( con ) в true, якщо з'єднання встановлено.
Загальнодоступна функція disconnect()
Функція перевіряє змінну з'єднання існування. Якщо з'єднання встановлено ( con є), то закриваємо з'єднання з MySQL MySQL і повертаємо true . Інакше робити нічого не треба.
Загальнодоступна функція select()
Переходимо до тієї частини,де все трохи ускладнюється. Ми починаємо працювати з аргументами користувача та повертаємо результати запиту. У нас немає необхідності використовувати результати прямо зараз, але нам необхідно створити змінну, в якій ми будемо зберігати результати користувача за запитами з БД. Крім того, ми також створимо нову функцію, яка перевірятиме чи існує дана таблиця в БД. Ця функція буде створена окремо, тому що всі наші CRUD операції вимагатимуть такої перевірки. Таким чином, це трохи очистить наш код і надалі сприятиме оптимізації коду. Нижче наведено функцію перевірки таблиць ( tableExists ) і загальнодоступна змінна з результатами запитів.
Ця функція легко перевіряє наявність необхідної таблиці в БД. Якщо таблиця існує, поверне true, інакше поверне false.
На перший погляд виглядає жахливо, але при цьому тут ми робимо цілу купу важливих речей. Функція приймає чотири аргументи, один із яких є обов'язковим. Функція поверне результат за наявності єдиного аргументу імені таблиці. Однак, ви можете розширити кількість аргументів і додати нові аргументи, які ви зможете використовувати при роботі з БД; адже коректне виконання функції залежить від однієї аргументу – імені таблиці. Код у межах функції служить для компіляції всіх аргументів у select запит. Як тільки запит буде складено, знадобиться перевірка на наявність у базі даних потрібної таблиці – для цього використовується функція tableExists . Якщо таблицю знайдено, функція буде продовжена і запит буде надіслано. Інакше все зупиниться.
У наступній секції наведено справді магічний код. Суть у наступному: зібрати дані, запитані з таблиці. Потім привласнюємо наш результат змінної. Щоб спростити результат для кінцевого користувачазамість числових ключів використовуватимемо імена стовпців. Якщо кількість рядків таблиці більше одиниці, на виході ви отримаєте двовимірний масив, в якому перший ключ - це число (інкремент), другий ключ - це назва колонки. Якщо в таблиці всього один рядок, буде повернено одновимірний масив, назва ключів якого відповідає іменам стовпців таблиці. Якщо рядків у таблиці не знайдено, змінному result буде надано значення null . Як я сказав раніше, все виглядає трохи заплутаним, але варто вам розбити код на окремі секції, все стане набагато простіше і зрозуміліше.
Загальнодоступна функція insert()
Як бачите ця функція досить проста, порівняно зі складанням запитів select до БД. Насправді, функція delete буде ще простіше.
Загальнодоступна функція delete()
Ця функція просто видаляє таблицю або рядки нашої БД. Таким чином, нам треба передати у функцію ім'я таблиці та опціональний аргумент, що визначає умову where . У разі наступного за ключовим словом WHERE слід уточнення: видалити рядок, рядки або всю таблицю. Якщо умова where опущена, будуть видалені всі рядки. Потім складається запит delete і слідує виконання запиту.
Нарешті, перейдемо до нашої останньої основної функції. Ця функція служить для оновлення рядка БД новою інформацією. Ця функція здавалося б складна розуміння, проте, це зовсім так. Ми будемо використовувати ті самі принципи, що й раніше. Наприклад, аргументи використовуватимуться для складання запиту update . Також ми перевіримо наявність таблиці за допомогою методу tableExists. Якщо таблиця існує, оновимо відповідний рядок. Найскладніша частина, звичайно, та, де ми займаємося складанням запиту update. Оскільки оператор update маєправило за раз оновлювати всі рядки, нам необхідно врахувати це та правильно відрегулювати цей момент. Отже, я вирішив умову, де передавати як простий масив. Перший аргумент у цьому масиві – ім'я стовпця, наступний аргумент значень стовпця. Таким чином, кожен парний номер (включай 0) відповідає імені стовпчика, а кожен непарний номер містить непарне значення. Відповідний код наведено нижче:
У наступній секції ми створимо частину update оператора, настроюючи змінні. Оскільки ви можете змінити будь-яке числове значення, я віддав перевагу масиву з ключами за назвою стовпця і новими значеннями. Таким чином, нам залишиться зробити перевірку на тип значення і де потрібно поставити кому. Тепер, коли ми склали дві основні частини оператора update, завершити складання оператора update не складе труднощів, код представлений нижче:

Використання
Отже, ми створили наш клас, але як його використати? Тут усе просто. Почнемо зі створення простої БД, в якій протестуємо наш клас. Я створив базу даних test і склав простий оператор mysql. Ви можете помістити його до будь-якої БД.

Тепер, коли наша таблиця створена і заповнена, настав час запустити кілька простих запитів.
Якщо все зроблено коректно, ви побачите такі:

Аналогічно ми можемо запустити запит на оновлення та вивести результати.