PDA

Просмотр полной версии : [Вопрос] Сохранение MySQL.



Trane911
31.01.2014, 18:44
Всем привет. У меня опять вопрос по MySQL.
Все было хорошо, все сохранялось. Сегодня добавил несколько переменных, вписал все правильно, перепроверил, до этого уже добавлял переменные. В БД тоже добавил ячейки, все как надо.
Беда вот в чем, если я запускаю мод с новыми переменными, то не сохраняет ничего вообще (но загружает из БД все правильно), а если убрать новые переменные из паблика сохранения, тогда старые переменные сохраняет нормально.
Неужели, есть какой-то лимит переменных? О_О
Проблема именно в паблике сохранения.
Ну и конечно же сам паблик:


stock SaveAccount ( playerid )
{
new float: health;
new float: armour;
GetPlayerHealth(playerid, Float:health);
GetPlayerArmour(playerid, Float:armour);
PlayerInfo[playerid][pHp] = health;
PlayerInfo[playerid][pArmour] = armour;
new query [ 144 ] ;
format ( query, sizeof(query), "UPDATE `users` SET `Age` = '%d',\
`pAdmin` = '%d',\
`pLvL` = '%d',\
`pExp` = '%d',\
`pVip` = '%d',\
`pFrak` = '%d',\
`pLeader` = '%d',\
`pMember` = '%d',\
`pStatus` = '%d',\
`pFLvL` = '%d',\
`pRep` = '%d',\
`pClLeader` = '%d', \
`pClMember` = '%d',\
`pModel` = '%d',\
`pSkin` = '%d',\
`pFSkin` = '%d',\
`pHp` = '%f', \
`pArmour` = '%f',\
`pOtkr` = '%d'\
WHERE `id` = '%d' LIMIT 1",
PlayerInfo [ playerid ] [ Age ],
PlayerInfo [ playerid ] [ pAdmin ],
PlayerInfo [ playerid ] [ pLvL ],
PlayerInfo [ playerid ] [ pExp ],
PlayerInfo [ playerid ] [ pVip ],
PlayerInfo [ playerid ] [ pFrak ],
PlayerInfo [ playerid ] [ pLeader ],
PlayerInfo [ playerid ] [ pMember ],
PlayerInfo [ playerid ] [ pStatus ],
PlayerInfo [ playerid ] [ pFLvL ],
PlayerInfo [ playerid ] [ pRep ],
PlayerInfo [ playerid ] [ pClLeader ],
PlayerInfo [ playerid ] [ pClMember ],
PlayerInfo [ playerid ] [ pModel ],
PlayerInfo [ playerid ] [ pSkin ],
PlayerInfo [ playerid ] [ pFSkin ],
PlayerInfo [ playerid ] [ pHp ],
PlayerInfo [ playerid ] [ pArmour ],
PlayerInfo [ playerid ] [ pOtkr ],
PlayerInfo [ playerid ] [ ID ]) ;
mysql_function_query ( dbHandle, query, false, "", "" ) ;
return 1;
}

DeimoS
31.01.2014, 19:42
Просто увеличь размер массива, в котором формируется запрос.

new query[144] ;
Уже без содержимого переменных у тебя около 360 ячеек занимает текст, а ты выделил только 144.

Trane911
31.01.2014, 20:02
sizeof(query) не для этого разве?
А если я еще в 3 раза больше ячеек сделаю? Мне придется выделять 1500-2000 ячеек?

DeimoS
31.01.2014, 21:03
sizeof(query) не для этого разве?
А если я еще в 3 раза больше ячеек сделаю? Мне придется выделять 1500-2000 ячеек?

Изучи переменные лучше и научись с ними работать :)
sizeof как раз и определяет число ячеек, которые ты выделил для переменной.
А количество ячеек в переменной зависит от максимально возможной длинны строки, а длинна строки зависит от длинны информации, которую ты будешь в неё помещать.

Hidden
31.01.2014, 21:03
sizeof(query) не для этого разве?
А если я еще в 3 раза больше ячеек сделаю? Мне придется выделять 1500-2000 ячеек?

sizeof(query) не для этого.

Считать нужно, сколько ячеек займёт запрос.
Как считать?


UPDATE `users` SET `Age` = '%d',\
`pAdmin` = '%d',\
`pLvL` = '%d',\
`pExp` = '%d',\
`pVip` = '%d',\
`pFrak` = '%d',\
`pLeader` = '%d',\
`pMember` = '%d',\
`pStatus` = '%d',\
`pFLvL` = '%d',\
`pRep` = '%d',\
`pClLeader` = '%d', \
`pClMember` = '%d',\
`pModel` = '%d',\
`pSkin` = '%d',\
`pFSkin` = '%d',\
`pHp` = '%f', \
`pArmour` = '%f',\
`pOtkr` = '%d'\
WHERE `id` = '%d' LIMIT 1
Количество символов здесь + значения переменных.

Trane911
31.01.2014, 21:16
Спасибо огромное вам двоим. Отлично объяснили.
P.S. проблема исправлена.
Тему можно закрывать.
Спасибо еще раз! :)