Как подменить BLOB в mySQL?

lazerhead

Проверенные
Сообщения
324
Реакции
120
Баллы
8,140
Необходимо отредактировать критерий трофея, но в базу данных он пишется в виде BLOB:

xf_trophy-user-criteria.bin

В нем конструкция вида:

Код:
{s:4:"rule";s:10:"steam_game";s:4:"data";a:1:{s:5:"games";a:11:{i:0;s:5:"500";i:1;s:5:"600";i:2;s:5:"700";i:3;s:5:"800";i:4;s:5:"900";i:5;s:6:"990";i:6;s:5:"999";i:7;s:5:"666";i:8;s:5:"1337";i:9;s:5:"12345";i:10;s:5:"0000";}}}}

Которая выдает ачивку за наличие на аккаунте одной из перечисленных игр. Т.е. действует по принципу "или" (or). Мне же нужно, чтобы ачивка выдавалась, только если на аккаунте содержатся все перечисленные игры. Т.е. по условию "и" (and)

Путем сравнения критериев других трофеев, я заметил, что куски кода i:x;s:y: имеют значение "или", в то время как куски кода i:x;a:y: имеют значение "и". Что мне нужно: я хочу в нужных местах в приведенной мною длинной конструкции поменять s на a (с этим проблем нет) И впихнуть измененный BLOB обратно в базу данных (а вот это не знаю как сделать).

Через создание трофеев в Xenforo критерий "и" для данного типа трофея создать не получается, не предусмотрено такой возможности. Иначе я бы, конечно, создал сразу там.

Есть идеи, как заменить BLOB в ячейке таблицы?
 
Последнее редактирование:
UPD:

Путем сравнения критериев других трофеев, я заметил, что куски кода i:x;s:y: имеют значение "или", в то время как куски кода i:x;a:y: имеют значение "и".
Ого, выходит я угадал. Изначально было: трофей выдавался за наличие хотя бы одной из всех частей GTA купленных в Steam на аккаунте. В то время как мне нужно было, чтобы он выдавался за наличие сразу всех их. Т.е. должно быть куплено GTA1-5.

Скачал blob из нужной ячейки в БД. Поменял i:s на i:a в нем в нужных местах через блокнот, сохранил изменения. Залил обратно в БД. И ачивка стала работать как надо. Раньше она мне выдавалась, теперь - не выдается, потому что GTA5 я не покупал. Шикарно :thumbsup: P.S. Не опасно ли так ковыряться?

Да нет, трофей просто перестает работать. И галочки критериев сбрасываются :-D Видимо так лучше не делать.
 
UPD:

Ого, выходит я угадал. Изначально было: трофей выдавался за наличие хотя бы одной из всех частей GTA купленных в Steam на аккаунте. В то время как мне нужно было, чтобы он выдавался за наличие сразу всех их. Т.е. должно быть куплено GTA1-5.

Скачал blob из нужной ячейки в БД. Поменял i:s на i:a в нем в нужных местах через блокнот, сохранил изменения. Залил обратно в БД. И ачивка стала работать как надо. Раньше она мне выдавалась, теперь - не выдается, потому что GTA5 я не покупал. Шикарно :thumbsup: P.S. Не опасно ли так ковыряться?

Да нет, трофей просто перестает работать. И галочки критериев сбрасываются :-D Видимо так лучше не делать.
по идеи тут схема схожая с IPB, т.е. данные нужно сначала , а при записе в БД , но это ксен и все что запишется в базу напрямую будет работать криво, либо не будет работать совсем, потому что нужно использовать стандартные датаврайтеры(как показала практика), а если в ДВ нету задания условий, то и работать оно будет не так как нужно... как-то так, возможно оно на самом деле как-то иначе, но если раскопаете ответ, хотел бы его услышать :)
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу