Учимся работать с PAWN + MySQL Введение: Сегодня большие проекты и не очень создают готовые моды или редактируют старые с целью установки в свой мод базы данных MySQL. А все потому, что переход на БД открывает нам большие возможности и удобства, подкидывает Ваш сервер на несколько ступенек верх. Что нам дает такого база данных? Ну, во-первых в scriptfiles нашего сервера не будет валяться тысячи файлов-аккаунтов, которые засирают, хоть и немного, выделенного места под сервер и если Вы делаете бекап аккаунтов - это жутко долго. Во-вторых в базе данных аккаунты легче редактировать. В третьих базу данных можно держать на совсем постороннем ресурсе. Мы можем подключить к БД наш сайт => UCP, просмотр статистики на сайте, и много другое что только можно придумать, за исключением невозможного, ну Вы сами знаете .
Создание Базы Данных: Если Ваш хостер предоставляет Вам базу данных, то создавать её не нужно. она уже готова, нужно знать только данные для подключения. Если Вы работаете на локальном хосте (на своем компе), то установите любую хорошую сборку для создания веб-сайта, например XAMPP. Зайдите в PHPmyAdmin и создайте свою БД. Как пользоваться PHPmyAdmin и создавать базы, таблицы Вам расскажет google youtube.
Выбор плагина mysql для сервера: Существует несколько видов плагинов от разных разработчиков. Есть небольшие отличия в названиях и количестве функций, может еще в чем-то, но везде один и тот-же метод подачи запросов в базу. Вы можете почитать описания каждого из плагинов и выбрать для себя свой идеал Я же буду использовать плагин MySQL Plugin R6, как-то привык с ним работать.
Подключение плагина и инклуда: 1. Закидываете плагин в папку с плагинами. 2. Закидываете инклуд в папку инклудов программы pawno 3. Прописываете в начале мода строку к своему инклуду. 4. Прописываете плагин в конфиге сервера.
Работа с Базой Данных: Теперь начинается самое интересное. Я думаю Вы уже создали табличку в базе данных. Работаем в самом моде.
В начале мода пишем:
Code
#define ENABLE_DEBUGGING true new g_ConnectionHandle;
Тут все прозрачно: mysql_debug - включаем журнал работы базы (если не нужно выключите) mysql_connect - соединяемся с базой данных. Значения поменяйте на свои.
Выполнение запросов:
Выбираем один аккаунт игрока у которого номер = PlayerInfo[playerid][pSQLID]
Code
new query[128]; format(query, sizeof(query), "SELECT * FROM players WHERE id = %d LIMIT 1",PlayerInfo[playerid][pSQLID]); mysql_query(query); mysql_store_result();
Обновить таблицу houses Выставить owner=0 в строке где id=houses[allnumber[playerid]][hid]
Code
new query[512]; format(query, sizeof(query), "UPDATE houses SET owner=0 WHERE id='%d'", houses[allnumber[playerid]][hid]); mysql_query(query); mysql_store_result();
Точно таким-же способом обновляем данные, удаляем строки, добавляем и т.п. Очень советую поковыряться в системах регистраций на MySQL, разобрать все по полочкам.
На этом наверное все! Что забыл позже дорисую.
Сообщение отредактировал FiLE - Воскресенье, 18.11.2012, 23:40
Выбираем один аккаунт игрока у которого номер = PlayerInfo[playerid][pSQLID]
Code
new query[128]; format(query, sizeof(query), "SELECT * FROM players WHERE id = %d LIMIT 1",PlayerInfo[playerid][pSQLID]); mysql_query(query);
Ну и? Query запрос отправили, а где мы Выбираем? Где обработка результата (ответа от mysql сервера)???
Quote (FiLE)
Я же буду использовать плагин MySQL Plugin R7, как-то привык с ним работать.
Quote (FiLE)
mysql_query(query);
Ничего что функции mysql_query(query); в MySQL Plugin R7 попросту нет?!
Quote (Dreven)
Мне интересно зачем переменная ConnectionHandle? Поидее она же дальше нигде не будет использоваться
Если ты конкретно об этом примере, то возникает тот же вопрос. А так вообще для тех кто не в курсе, это идентификатор подключения. Для работы с несколькими MySQL серверами.
Я же буду использовать плагин MySQL Plugin R7, как-то привык с ним работать.
Я в этом человек серый и безграмотный, но даже я знаю, что Р7 это последняя версия плагина, где команды идут разными потоками что приводит к оптимизации. А этого не написано
Dima-kun, спасибо что исправил опечатки в мое отсутствие, т.к. тема создавалась в форсированном режиме.
Quote (AirKite)
Во первых непонятно в чём заключается обучение?
Тебя она ничему не учит, а те кто не знают - большая помощь в установке базы данных в мод. Думали я напишу инструкцию по всем функциям? Или Руководство по MYSQL? Зачем создавать велосипед?