Форум Pawn.Wiki - Воплоти мечту в реальность!: Основы MySQL в SA-MP. Объединение всех уроков. - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

[ Урок ]
Основы MySQL в SA-MP. Объединение всех уроков.
Оценка: ***** 1 Голосов

#1
Пользователь офлайн   0def1x 

  • Новые возможности за MySQL
  • Вставить ник
  • Раскрыть информацию
SQL - База Данных на самом деле интересная вещь, которая стоит отдельного внимания на этапе разработки и конечно же самого изучения.
Данная тема предназначена для новичков, которые только начинают свой путь и хотят разобраться с базами данных.
В данном уроке я попытаюсь научить, Вас - дорогих новичков самым простым азам работы с базой данных.
Да, безусловно есть другие темы по типу подключения и так далее - хочу собрать их в одну единую тему и немного сделать ремейк.

Выбор локальной машины.

Локальная машина - важнейшая часть для работы с базами, и вообще для хранения веб-приложений на личном ПК не используя хостинг. Но стоит учитывать, что локальная база данных не сможет быть использована допустим на хостинге не импортировав конечный результат базы на сам хостинг!
Одни из самых популярных машин - OpenServer и Denwer. В моём случае - буду использовать OpenServer, что и, Вам, советую.


Создание первой базы данных.

Давайте сначала установим OpenServer, ссылка на скачивание всех ресурсов будет предоставлена в конце урока.
Запустить прямо-таки сразу базу на OpenServer'e не получится, её нужно настроить в настройках.
Чтобы это сделать - запустите OpenServer с ярлыка от имени администратора (По умолчанию он должен запускаться в автоматическом режиме администратором), в панели задач, Вы, сможете увидеть появившийся значок флажка. Он может быть красный, зелёный, жёлтый - в зависимости от статуса работы машины.
https://sun9-80.userapi.com/impg/hlFZLLwofWrLfrV71k9Uhf0oxsIA-Cbhc-rEcQ/gKwj4nx8doE.jpg?size=254x40&quality=96&sign=4334e43188a8a2e577de4aa6a4698618& type=album
Нажав правой кнопкой по флажку OpenServer'a появится меню, в котором нужно выбрать пункт "Настройки".
https://sun9-49.userapi.com/impg/v6EOGVnlQ3lMiZjSKFMaQeuQKTXTVh3o9AL70A/W6XMhTCRLvw.jpg?size=168x289&quality=96&sign=d2328745cdf5513aad836fa39dcc39a0& type=album
Откроется окно, так называемое настройкой. Сверху, Вы, увидете много разных пунктов меню, которое отвечает за свою часть на локальной машине.
Нам нужен пункт с названием "Модули". Откроем его, посмотрим что мы имеем.
По умолчанию, если ничего не менялось - MySQL /Maria DB будут пустыми, именно этот пункт нужно настроить для работы базы данных.
https://sun9-6.userapi.com/impg/1Yzdoy1K_E3_MB97SFWduzXdqoxHr17d_EEhcQ/hu-tjb7WANM.jpg?size=579x399&quality=96&sign=36f5abd43f2d3914a1549ca10a1de24c& type=album
Можете выбрать основу phpMyAdmin сами, я лично использую - MySQL 5.7 for WIN10. Отличия не замечал, ничего сказать по поводу MariaDB - не могу.
В конечном итоге должно получиться, что пункты MySQL / Maria DB заполнены, а Prostage SQL - нет. Так и должно быть. (см. скрин выше)
Сохраняем и перезапускаем/запускаем OpenServer. Если всё правильно установлено - флажок из красного перекрасится в зелёный.

Создание первой базы данных.

Итак, если вышеперечисленный пункт был выполнен - должен заработать сайт
http://127.0.0.1/openserver/phpmyadmin/

Переходим по нему и нас встречает окно авторизации.
https://sun9-71.userapi.com/impg/a44jrhgGfBVnjSm2ZBRLFTCVqQRiFObLN4OGpA/yCrQoU0warI.jpg?size=455x460&quality=96&sign=e6742f869d324163458a278f9d777f31& type=album
Для входа нужны данные. В зависимости от выбранной версии phpMyAdmin - выбирайте данные из нижеперечисленного списка:
MySQL любая версия:
Login: root
Password: root
--------
Maria DB любая версия:
Login: root
Password: отсутствует


Выбираете нужные данные исходя из версии PMY(phpMyAdmin) и входите, вход должен быть успешным, если что-то не подошло - напишите в тему, отвечу.

Итак, мы попадаем на главную страницу локальной базы данных, пугаться нечему - со временем разберётесь во всём.
https://sun9-85.userapi.com/impg/fzUxYS_zdrhPjIX6rAGZYT4dYZSYNkDTois1SQ/Ru0oo8NwBXI.jpg?size=1280x582&quality=96&sign=57f8b12391e215276cb8bb99823d46df& type=album
Нажимаем на пункт сверху - "Базы Данных", попадаем на страницу со всеми доступными созданными базами данных.
https://sun9-36.userapi.com/impg/ClHrbqobqFL1IAUfm_cuEdATW17hZcojU4QN9w/qhI5OKglnDc.jpg?size=1280x577&quality=96&sign=3e06a72306ee39b138d33e1d2e07dd99& type=album
Тут можно создать базу данных, сколько угодно - но самое главное правило учитывать кодировку, создадим же свою первую базу данных!
В поле ввода: "Имя базы данных" - можете ввести любое имя базы данных, не слишком длинное чтобы легче было запомнить и использовать в дальнейшем.
Теперь самое ответственное - кодировка. Кодировка бывает многих типов, начиная от юникода - заканчивая "эльфийским языком".
Для работы с русским языком, и комфортной работой с базой советую использовать кодировку: cp1251 / cp1251_bin (бинарная кодировка, разницы не видел)
По идеалу должно получиться следующим образом:
https://sun9-26.userapi.com/impg/Jf6_jA9ac63MImcnOFCnA3B74BMHGqjR-waKdw/BOji5apmk4k.jpg?size=1280x580&quality=96&sign=c112eb5a0929948ae10a1d5e79151b04& type=album
Нажав кнопочку "Создать" - магическим образом у нас создаётся база данных, в которую уже можно соответственно создавать таблицы и вносить в них данные.

Подключение базы данных в мод.

Подключение базы в мод - самая простая задача. Для начала скачайте плагин и инклуд с сайта github. (Все ссылки в конце урока)
Актуальная и хорошая версия плагина для работы с базой данных - MYSQL R41-4.
Скачав его и распаковав, как нужно - нужно вписать пару строк в мод.
В самое начало, после #include <a_samp> нужно вписать #include <a_mysql> с учётом "a_", без этого - работать не будет.
Если всё прекрасно и скомпилировав мод ошибки не будет - продолжаем дальше.
После всех инклудов вставляем дефайны, которые облегчат работу, и так же новую переменную для подключения.
Вписываем следующий код в начало после инклудов:
#define MySQL_USER	"" // Имя юзера в базе данных
#define MySQL_PASS	"" // Пароль от юзера в БД
#define MySQL_BASE	"" // Созданная нами база данных
#define MySQL_HOST 	"" // IP-Адресс хостинга базы данных, в нашем случае 127.0.0.1 или же localhost.

// Создадим переменную для подключения базы данных.
new MySQL:dbHandle; /* можете назвать переменную как угодно, но не запутайтесь в будущем.  */


В самый конец мода:

stock ConnectMySQL()
{
	dbHandle = mysql_connect(MySQL_HOST, MySQL_USER, MySQL_PASS, MySQL_BASE);
	switch(mysql_errno(dbHandle))
	{
		case 0: printf("База данных (%s) подключена успешно!", MySQL_BASE);
		default: printf("База данных (%s) не смогла подключиться. Ошибка: %d", mysql_errno(dbHandle));
	}
	/* В переменную, которую мы создали выше делаем подключение, и её же будем использовать для подключения во всяких командах БД в самом коде */
	return 1;
}


В OnGameModeInit() - в самое начало вписываем:
ConnectMySQL();

Если всё сделано верно - ошибок не будет.

Вот подключение и готово, давайте объясню пару команд для кода:
mysql_query(MySQL:handle, const query[]); // Создание запроса на базу данных используя переменную подключения - dbHandle, запрос может быть любым, об этом уже читайте в документации SQL.
mysql_tquery(MySQL:handle, const query[], const callback[] = "", const format[] = "", {Float, _:...}) // Создание запроса на базу так же как и в обычном query, но уже данная строчка принимает много аргументов для передачи в функцию, которая будет срабатывать при выполнении.
mysql_format(MySQL:handle,  обычный формат); // Cлужит для форматирования запросов, лучше делать конечно через mysql_format, при обычном - есть возможность ошибиться и всё будет плохо. Для запросов в базу  - используйте этот формат
mysql_close(MySQL:handle); // Закрытие подключения.

В основном используются только эти функции, остальное можете прочесть на официальном портале GitHub плагина.

Ссылки на ресурсы:

MySQL R41-4 - GitHub
OpenServer - Official Site
Denwer - Official Site
Тема со всеми основными ошибками в MySQL - Pawn-Wiki

Автор: 0def1x

Сообщение отредактировал 0def1x: 11 октября 2022 - 14:46

4

#2
Пользователь офлайн   swlm 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Хороший урок, хоть и сам уже давно разобрался с MySQL
1

#3
Пользователь офлайн   Saibot 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

0def1x сказал:

SQL - База Данных на самом деле интересная вещь

SQL - язык структурированных запросов для управления данными в БД, а не База Данных.
1

#4
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Да и MySQL - не база данных, а СИСТЕМА УПРАВЛЕНИЯ базами данных.

Советовать Денвер - моветон. Уж лучше какой-нибудь XAMPP упомянуть или просто посоветовать вбить в гугл "Аналоги Open Server".
Хотя вообще гораздо проще и разумнее поставить MySQL-сервер напрямую, а не качать и устанавливать целые среды для разработки, содержащие кучу всего другого, что для SAMP не понадобится (если, конечно, вам жалко собственное время и место на ПК). Тем более, что много ума для ручной установки MySQL не требуется. Достаточно просто вбить в поиск "Как установить MySQL на *название операционной системы*" и на выходе даже видеоуроки получить. Ну или просто знать базовый английский и внимательно читать то, о чём пишется в установочнике MySQL-сервера :wpml_unsure: На выходе получите то же самое, только, как минимум, на загрузку установочного файла из интернета потратите гораздо меньше времени. Да и, при должном упорстве, приобретёте навык конфигурации MySQL-сервера, что позволит решить ряд возможных проблем в будущем.

Сообщение отредактировал DeimoS: 14 октября 2022 - 16:37

0

#5
Пользователь офлайн   0def1x 

  • Новые возможности за MySQL
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (14 октября 2022 - 16:35) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Знаешь, многие люди, как показывает моя практика - не знают даже, что такое переменная - и такие вещи за гранью их возможностей. Я разложил тему на понятном всем языке, даже самый древний чайник с древней Руси сможет установить там локальную машину на свой пк, и начать работать за ней. В любом случае спасибо за критику.
0

#6
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщения0def1x (14 октября 2022 - 17:19) писал:

многие люди, как показывает моя практика - не знают даже, что такое переменная - и такие вещи за гранью их возможностей.


Так и в этом случае установить исключительно MySQL-сервер гораздо проще, ибо:

Изображение

:rolleyes:

При этом, даже тот же Open Server имеет много подводных камней, с которыми можно легко столкнуться при установке. Например:
Скрытый текст [Показать]

Ну и ещё больше примеров можно найти тут.

Сообщение отредактировал DeimoS: 18 октября 2022 - 11:29

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика