Від автора: розробляючи веб-додатки, найчастіше, для зберігання контенту і різної системної інформації використовуються таблиці бази даних. І, як Ви знаєте, для роботи з базою даних необхідно скласти SQL запит, і відповідно виконати його на сервері бази даних, для отримання бажаного результату. При цьому, процес складання запиту – це досить рутинна робота, яка забирає значну кількість часу і вимагає уваги, якщо Ви працюєте з великою кількістю полів в таблицях. Тому в даному уроці я хотів би представити Вашій увазі просту, але в той же час функціональну бібліотеку під назвою Medoo, яка значно спрощує взаємодію з базою даних і позбавляє веб-розробника від необхідності складання SQL запитів. Даний урок – це знайомство з medoo як з зручним інструментом для роботи з базою даних.
Отже, знайомство з Medoo, ми почнемо, традиційно з установки. Встановити бібліотеку можна двома способами – вручну й автоматично.
Важливе зауваження: бібліотека Medoo PHP, використовує у своїй роботі PDO, а значить Перед початком роботи, Ви повинні переконатися, що у Вашому інтерпретатор мови PHP, підключено розширення PDO для цікавить системи управління базами даних.
Ручний спосіб установки Medoo
Для ручної установки необхідно перейти на офіційний сайт бібліотеки Medoo.
Потім, використовуючи посилання «Download», необхідно завантажити архів з останньої актуальної версії бібліотеки в каталог Вашого проекту (сайту або скрипта). В отриманому архіві міститься файл medoo.php – це і є цікавить нас, бібліотека. Тепер необхідно лише підключити дану бібліотеку до Вашого проекту:
require «medoo.php»;
На цьому ручна установка завершена.
Автоматична установка Medoo
Автоматична установка Medoo, передбачає, використання інструменту Composer. Для цього необхідно відкрити командний рядок, перейти в каталог з проектом і виконати команду.
composer require catfan/Medoo
Далі, необхідно підключити файл autoload.php, який міститься в каталозі vendor (цей каталог був згенерований Composer).
require «vendor/autoload.php»;
На, це автоматична установка Medoo – завершена.
Налаштування підключення до бази даних
Тепер необхідно створити об’єкт основного класу Medoo і в якості першого параметра, його методом конструктору, потрібно передати масив налаштувань для підключення до бази даних.
$db = new medoo([
‘database_type’=>’mysql’,
‘database_name’=>’medoo’,
‘server’=>’localhost’,
‘username’=>’root’,
‘password’=>»,
‘charset’=>’utf8’,
‘prefix’=>’slim_’
]);
В переданому масиві, необхідно створити наступні налаштування:
database_type – тип системи управління базами даних;
database_name – ім’я бази даних, до якої здійснюється підключення;
server – сервер бази даних;
username – ім’я користувача;
password – пароль;
charset – кодування;
prefix – префікс таблиць бази даних.
Тепер, коли створений об’єкт головного класу Medoo, ми можемо приступати до роботи з бібліотекою.
Додавання, редагування та видалення записів
Насамперед, давайте навчимося додавати нові записи в таблиці бази даних. Для додавання нового запису і відповідно, формування SQL запитів типу INSERT, необхідно використовувати метод insert($table, $data), об’єкта класу Medoo.
$result = $db->insert(
‘news’,
[
«title»=>»Test»,
«keywords»=>»Test»,
«discription»=>»Test»,
«text»=>»Test»,
«anons»=>»Test»,
«date»=>423424234,
«#dt»=>»NOW()»,
]
);
При виклику методу insert($table, $data), в якості параметрів, необхідно передати наступне:
$table – ім’я таблиці, в яку буде додана нова запис, у вигляді рядка;
$data – масив даних для додавання поля в таблиці. При цьому в якості ключів, що використовуються імена полів, в якості значень – дані які будуть записані у відповідні поля.
Метод insert(), не тільки формує SQL запит, виконує його, і повертає ідентифікатор, останній доданій запису. Для редагування записів, використовується метод update($table, $data, $where):
$result = $db->update(
‘news’,
[
«title»=>»Test1»,
«keywords»=>»Test»,
«discription»=>»Test»,
«text»=>»Test»,
«anons»=>»Test»,
«date»=>423424234,
«#dt»=>»NOW()»,
],
[
‘id’ => 10
]
);
При виклику методу update($table, $data, $where), в якості параметрів, необхідно передати наступне:
$table – ім’я таблиці, в якій буде виправлений запис;
$data – масив даних для редагування (по аналогії з додаванням записів);
$where – масив даних – для формування умови WHERE. При цьому в масиві зберігаються дані у вигляді ключ(ім’я поля) => значення, які сформують умова WHERE.
Цей метод, так само як і метод insert(), формує SQL запит, виконує його, при цьому повертається кількість порушених записів. Для видалення записів з бази даних, використовується метод delete($table, $where):
$result = $db->delete(‘news’,
[
‘id’=>10
]
);
При виклику цього методу, необхідно передати наступне:
$table – ім’я таблиці, в якій буде видалено запис;
$where – масив даних, для формування умови $where.
Цей метод, що повертає, за аналогією з методом update(), кількість порушених записів.
Вибірка інформації з бази даних
Для формування запиту SQL типу SELECT і вибірки необхідної інформації, використовується метод select($table, $columns, $where):
$row = $db->select(
‘slim_content’,
[‘id’,’title(name)’,’introtext’,’fulltext’],
[
‘id’ => 1
]
);
При виклику методу select($table, $columns, $where) необхідно передати наступні параметри:
$table – ім’я таблиці, з якої будуть обрані дані;
$columns – масив імен полів, дані яких будуть обрані з таблиці. При цьому якщо біля імені поля, в дужках вказати якусь рядок, то дана рядок буде використовуватися як псевдонім ім’я обраного поля.
$where – масив даних, для формування умови WHERE.
Метод select(), що повертає в якості результату роботи – асоціативний масив з даними по вибраних полях. А значить, використовуючи цикл foreach(), ми можемо обійти даний масив і відобразити на екрані отримані дані:
foreach($row as $item) {
echo «
«.$item[‘name’].»
«;
echo «
«;
}
Тепер давайте розглянемо випадок, коли у вибірку даних з однієї таблиці, необхідно додати інформацію в іншій таблиці, тобто використовувати об’єднання. Для цього також використовується метод select($table, $join, $columns, $where), але вже з додатковим параметром:
$row = $db->select(
‘slim_content’,
[
‘[>]slim_categories’=>[‘id_cat’=>’id’]
],
[‘slim_content.id’, ‘title(name)’, ‘introtext’, ‘fulltext’, ‘slim_categories.name(category)’],
[
‘slim_categories.id’ => 1
]
);
Зверніть увагу, що в якості другого параметра, передається параметр $join, який представляє собою масив з даними для формування умови JOIN. При цьому в якості ключа, використовується ім’я таблиці, дані якої будуть додані у вибірку. Перед ім’ям таблиці в квадратних дужках, необхідно вказати тип об’єднання:
[>] == LEFT JOIN
[<] == RIGH JOIN
[] == FULL JOIN
[><] == INNER JOIN
Значення, відповідного ключа, містить у собі умову об’єднання таблиць. У нашому випадку об’єднуються дві таблиці — slim_content і slim_categories, використовуючи ліве об’єднання. За такою умовою – поле id_cat, таблиці slim_content, відповідає полю id, таблиці slim_categories.
Синтаксис параметру WHERE
Тепер давайте розглянемо випадок, коли необхідно в умові WHERE сформувати кілька умов.
$row = $db->select(
‘slim_content’,
[
‘[>]slim_categories’=>[‘id_cat’=>’id’]
],
[‘slim_content.id’, ‘title(name)’, ‘introtext’, ‘fulltext’, ‘slim_categories.name(category)’],
[
‘AND’=>[
‘slim_categories.id’ => 1,
‘keywords’ => ‘Business’
]
]
);
Зверніть увагу, що для формування декількох умов, необхідно в параметрі $where, створити осередок «AND» для об’єднання за умов логічного оператора «AND» і «OR» – для «OR». Відповідно в даній комірці буде зберігатися масив з даними умов.
За замовчуванням, всі умови формуються оператором «=», якщо ж необхідно використовувати інший оператор – то його необхідно вказати в квадратних дужках, поруч з ім’ям поля умови.
$row = $db->select(
‘slim_content’,
[
‘[>]slim_categories’=>[‘id_cat’=>’id’]
],
[‘slim_content.id’, ‘title(name)’, ‘introtext’, ‘fulltext’, ‘slim_categories.name(category)’],
[
‘OR’=>[
‘slim_categories.id[>]’ => 1,
‘keywords’ => ‘Business’
]
]
);
Для вказівки параметрів сортування вибраних записів з бази даних, необхідно в параметрі $where, створити осередок ‘ORDER’, в якій будуть міститися дані про сортування.
$row = $db->select(
‘slim_content’,
[
‘[>]slim_categories’=>[‘id_cat’=>’id’]
],
[‘slim_content.id’, ‘title(name)’, ‘introtext’, ‘fulltext’, ‘slim_categories.name(category)’],
[
‘OR’=>[
‘slim_categories.id’ => 1,
‘keywords’ => ‘Business’
],
‘ORDER’ => ‘slim_content.id ASC’
]
);
Ось, власне і все, що я хотів сказати Вам в даному уроці. Якщо Вас зацікавила бібліотека Medoo – використовуйте її у своїх напрацюваннях. Всього Вам доброго і вдалого кодування!!!