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

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

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

Хотите изучить 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