Знакомство с Medoo. Удобный инструмент для работы с базой данных

Знакомство с Medoo. Удобный инструмент для работы с базой данных

От автора: разрабатывая веб-приложения, зачастую, для хранения контента и различной системной информации используются таблицы базы данных. И, как Вы знаете, для работы с базой данных необходимо составить SQL запрос, и соответственно выполнить его на сервере базы данных, для получения желаемого результата. При этом, процесс составления запроса – это достаточно рутинная работа, которая отбирает значительное количество времени и требует внимания, если Вы работаете с большим количеством полей в таблицах. Поэтому в данном уроке я хотел бы представить Вашему вниманию простую, но в тоже время функциональную библиотеку под названием Medoo, которая значительно упрощает взаимодействие с базой данных и избавляет веб-разработчика от необходимости составления SQL запросов. Данный урок – это знакомство с medoo как с удобным инструментом для работы с базой данных.

скачать исходникискачать урок

Итак, знакомство с Medoo, мы начнем, традиционно с установки. Установить библиотеку можно двумя способами – вручную, и автоматически.

Важное замечание: библиотека Medoo PHP, использует в своей работе PDO, а значит Перед началом работы, Вы должны убедиться, что в Вашем интерпретаторе языка PHP, подключено расширение PDO для интересующей системы управления базами данных.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Ручной способ установки 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):

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
$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 "<h2>".$item['name']."</h2>";
 echo "<div style='width:500px'>".$item['introtext']."</div>";
} 

Теперь давайте рассмотрим случай, когда в выборку данных из одной таблицы, необходимо добавить информацию из другой таблицы, то есть использовать объединение. Для этого все также используется метод 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 – используйте ее в своих наработках. Всего Вам доброго и удачного кодирования!!!

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Хотите изучить MySQL?

Прямо сейчас посмотрите 24-х часовой курс по базе данных MySQL!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (3)

  1. APTEM

    Насколько библиотека безопасна?
    Как фильтруются данные? SQL иньекции и т.д.
    Спасибо!

  2. Алекс

    А как на счет безопасности? Переменные, вставляемые в код нужно зачищать? Или medoo сам заботиться о защите от SQL-инъекций?

  3. Алекс

    Упс, не заметил предыдущий комментарий Артема. Присоединяюсь к его вопросу )).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree