Перейти к содержанию
Авторизация  
Neo Fernandez

Помогите пожалуйста, не сохраняются аккаунты в базе данных MySQL.

Рекомендуемые сообщения

Neo Fernandez

Вот код.

stock SaveAccount(playerid)
{
    if(PlayerLogged[playerid] == false || IsPlayerConnected(playerid) == 0) return 1;
    new src[500];
    format(query,sizeof(query),"UPDATE `accounts` SET ");
    format(src,sizeof(src),"ip='%s',",PI[playerid][pIP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"level=%d,",PI[playerid][pLevel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"admin=%d,",PI[playerid][pAdmin]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sex=%d,",PI[playerid][pSex]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"age=%d,",PI[playerid][pAge]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"securitycode='%i',",PI[playerid][pSecurityCode]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"model=%d,",PI[playerid][pModel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"memberskin=%d,",PI[playerid][pMemberSkin]);
    strcat(query,src,sizeof(query));
    if(PI[playerid][pCash] > 1000000000 || PI[playerid][pCash] < 0) PI[playerid][pCash] = 0;
    format(src,sizeof(src),"cash=%d,",PI[playerid][pCash]);
    strcat(query,src,sizeof(query));
    if(PI[playerid][pBank] > 1000000000 || PI[playerid][pBank] < 0) PI[playerid][pBank] = 0;
    format(src,sizeof(src),"bank=%d,",PI[playerid][pBank]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mute=%d,",PI[playerid][pMuted]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"warn=%d,",PI[playerid][pWarn]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"leader=%d,",PI[playerid][pLeader]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"templeader=%d,",PI[playerid][pTempLeader]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"member=%d,",PI[playerid][pMember]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"rank=%d,",PI[playerid][pRank]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pick=%d,",PI[playerid][pPick]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"exp=%d,",PI[playerid][pExp]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"news=%d,",PI[playerid][pNews]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"crimes=%d,",PI[playerid][pCrimes]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wanted=%d,",PI[playerid][pWanted]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedtime=%d,",PI[playerid][pWantedTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedwho='%s',",PI[playerid][pWantedWho]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedreason='%s',",PI[playerid][pWantedReason]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"jail=%d,",PI[playerid][pJail]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"job=%d,",PI[playerid][pJob]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"jailtime=%d,",PI[playerid][pJailTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"checktime=%d,",PI[playerid][pCheckTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"drugs=%d,",PI[playerid][pDrugs]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"patron=%d,",PI[playerid][pPatron]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"gunamount=%d,",PI[playerid][pGunAmount]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"heal='%f',",PI[playerid][pHeal]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"married=%d,",PI[playerid][pMarried]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"whomarried='%s',",PI[playerid][pWhoMarried]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"paycheck='%i',",PI[playerid][pPayCheck]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"charity='%i',",PI[playerid][pCharity]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"vip='%i',",PI[playerid][pVip]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"viptime='%i',",PI[playerid][pVipTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"time='%i',",PI[playerid][pTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"fstyle='%i',",PI[playerid][pFightStyle]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"credits='%i',",PI[playerid][pCredits]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"totalcredits='%i',",PI[playerid][pTotalCredits]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin1='%i',",PI[playerid][pSkin][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin2='%i',",PI[playerid][pSkin][1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin3='%i',",PI[playerid][pSkin][2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"spawnchange='%i',",PI[playerid][pSpawnChange]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sdpistol='%i',",PI[playerid][pSkill]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"deserteagle='%i',",PI[playerid][pSkill][1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"shotgun='%i',",PI[playerid][pSkill][2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mp5='%i',",PI[playerid][pSkill][3]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ak47='%i',",PI[playerid][pSkill][4]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"m4='%i',",PI[playerid][pSkill][5]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pistol='%i',",PI[playerid][pGunSkill][6]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"microuzi='%i',",PI[playerid][pGunSkill][7]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"hunger='%i',",PI[playerid][pHunger]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"healths='%f',",PI[playerid][pHealthS]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sportexp='%i',",PI[playerid][pSportExp]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"online='%i',",PI[playerid][pOnline]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"zakon='%i',",PI[playerid][pZakon]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"checkcode='%i',",PI[playerid][pCheckCode]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"city='%i',",PI[playerid][pCity]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"youtube='%i',",PI[playerid][pYouTube]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"watch='%i',",PI[playerid][pWatch]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ciggare='%i',",PI[playerid][pCiggare]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sprunk='%i',",PI[playerid][pSprunk]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mask='%i',",PI[playerid][pMask]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phonebalance='%i',",PI[playerid][pPhoneBalance]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"truckskill='%i',",PI[playerid][pTruckSkill]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cModel='%i',",PI[playerid][cModel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cFuel='%i',",PI[playerid][cFuel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cFuel='%i',",PI[playerid][cFuel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cClass='%i',",PI[playerid][cClass]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cColor1='%i',",PI[playerid][cColor][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cColor2='%i',",PI[playerid][cColor][1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cLock='%i',",PI[playerid][cLock]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cCost='%i',",PI[playerid][cCost]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cVehcom='%s',",PI[playerid][cVehcom]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPaintjob='%i',",PI[playerid][cPaintjob]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cProbeg='%.2f',",PI[playerid][cProbeg]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"helper='%i',",PI[playerid][pHelpers]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Voennik='%i',",PI[playerid][pVoennik]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"music='%i',",PI[playerid][pMusic]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"datavhod='%s',",date("%dd.%mm.%yyyy",gettime()));
    strcat(query,src,sizeof(query));
     format(PI[playerid][pRepcars],16,"%i, %i",PI[playerid][pRepcar][0],PI[playerid][pRepcar][1]);
    format(src,sizeof(src),"repcar='%s',",PI[playerid][pRepcars]);
    strcat(query,src,sizeof(query));
    format(PI[playerid][pImproves],32,"%i, %i, %i, %i",PI[playerid][pImprove][0],PI[playerid][pImprove][1],PI[playerid][pImprove][2],PI[playerid][pImprove][3]);
    format(src,sizeof(src),"improves='%s',",PI[playerid][pImproves]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"veh_reg='%i',",PI[playerid][pRegVehicle]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pcara='%i',",PI[playerid][pCarA]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pcarb='%i',",PI[playerid][pCarB]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pcarc='%i',",PI[playerid][pCarC]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pcard='%i',",PI[playerid][pCarD]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phonenumber='%i',",PI[playerid][pPhoneNumber]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber1='%i',",PhoneNumbers[playerid][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber2='%i',",PhoneNumbers[playerid][1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber3='%i',",PhoneNumbers[playerid][2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber4='%i',",PhoneNumbers[playerid][3]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber5='%i',",PhoneNumbers[playerid][4]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber6='%i',",PhoneNumbers[playerid][5]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber7='%i',",PhoneNumbers[playerid][6]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phnumber8='%i',",PhoneNumbers[playerid][7]);
    strcat(query,src,sizeof(query));
    format(PI[playerid][pLics],16,"%i, %i, %i, %i",PI[playerid][pLic][0],PI[playerid][pLic][1],PI[playerid][pLic][2],PI[playerid][pLic][3]);
    format(src,sizeof(src),"lic='%s',",PI[playerid][pLics]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pInt='%d',",PI[playerid][pInt]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pWorld='%d',",PI[playerid][pWorld]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"PosX='%f',",PI[playerid][PosX]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"PosY='%f',",PI[playerid][PosY]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"PosZ='%f',",PI[playerid][PosZ]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"trucklevel='%i'",PI[playerid][pTruckLevel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src)," WHERE name='%s' LIMIT 1",GetName(playerid));
    strcat(query,src,sizeof(query));
    /*format(src,sizeof(src),"family=%d,",PI[playerid][pFamily]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"familysozd=%d,",PI[playerid][pFamilySozd]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"familyzam=%d,",PI[playerid][pFamilyZam]);
    strcat(query,src,sizeof(query));*/
     mysql_tquery(dbHandle, query, "", "");
    return 1;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Buril

Покажите mysql_log, конкретно на момент сохранения аккаунта. Если у вас отключена функция логирования, тогда добавьте

В OnGameModeInit перед подключением к базе:

mysql_log(LOG_ALL);

Лучше было бы разделить один большой запрос на несколько небольших, так было бы удобнее.

Вероятно, ошибка может быть в отсутствии апострофов в некоторых Ваших строках, приведу пример.

Ваша строка:

format(src,sizeof(src),"admin=%d,",PI[playerid][pAdmin]);

Правильное использование:

format(src,sizeof(src),"admin='%d',",PI[playerid][pAdmin]);

Перед и после значения уровня администрирования(где %d) появляются апострофы, и получается '%d'.

И зачем вы используете функцию mysql_tquery? Вы отправляете запрос на обновление в базе без кэша, вам это незачем. Можно использовать обычный mysql_query.

И для чего выбрано настолько большое значения для src?

Изменено пользователем Buril
Дополнил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows
2 часа назад, Buril сказал:

Правильное использование:


format(src,sizeof(src),"admin='%d',",PI[playerid][pAdmin]);

Любые значения, не содержащие пробелов, не являющиеся ключевыми словами или именами столбцов можно передавать "как есть".

2 часа назад, Buril сказал:

И зачем вы используете функцию mysql_tquery? Вы отправляете запрос на обновление в базе без кэша, вам это незачем. Можно использовать обычный mysql_query.

mysql_query тоже возвращает кеш. Разница в том, что tquery подразумевает асинхронное выполнение SQL-запроса и кода. Принцип "запросить и забыть (пока SQL-запрос сам не вызовет callback)". query подразумевает синхронное выполнение SQL-запроса и кода. Принцип "запросить и ждать, пока ответ не будет получен". Лучше использовать tquery везде, где возможно. query обычно используют в специфичных условия, когда требуется именно второй принцип.

 

А если говорить по теме, то конец запроса выглядит примерно так:

..., familyzam=%d,

А должен выглядеть так:

..., familyzam=%d

Впрочем, такой вариант приведёт к изменению значений во всех записях таблицы. Для определения конкретной записи используется ключевое слово WHERE. Например:

..., familyzam=%d WHERE name="имя_пользователя"

 

Изменено пользователем 16Shadows

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Buril
В 10/24/2019 в 6:18 PM, 16Shadows сказал:

Любые значения, не содержащие пробелов, не являющиеся ключевыми словами или именами столбцов можно передавать "как есть".

mysql_query тоже возвращает кеш. Разница в том, что tquery подразумевает асинхронное выполнение SQL-запроса и кода. Принцип "запросить и забыть (пока SQL-запрос сам не вызовет callback)". query подразумевает синхронное выполнение SQL-запроса и кода. Принцип "запросить и ждать, пока ответ не будет получен". Лучше использовать tquery везде, где возможно. query обычно используют в специфичных условия, когда требуется именно второй принцип.

У меня нет большого опыта в работе с базами, но всё равно учту замечание, спасибо.:D83DDE07:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Neo Fernandez
В 10/24/2019 в 4:18 PM, 16Shadows сказал:

Любые значения, не содержащие пробелов, не являющиеся ключевыми словами или именами столбцов можно передавать "как есть".

mysql_query тоже возвращает кеш. Разница в том, что tquery подразумевает асинхронное выполнение SQL-запроса и кода. Принцип "запросить и забыть (пока SQL-запрос сам не вызовет callback)". query подразумевает синхронное выполнение SQL-запроса и кода. Принцип "запросить и ждать, пока ответ не будет получен". Лучше использовать tquery везде, где возможно. query обычно используют в специфичных условия, когда требуется именно второй принцип.

 

А если говорить по теме, то конец запроса выглядит примерно так:


..., familyzam=%d,

А должен выглядеть так:


..., familyzam=%d

Впрочем, такой вариант приведёт к изменению значений во всех записях таблицы. Для определения конкретной записи используется ключевое слово WHERE. Например:


..., familyzam=%d WHERE name="имя_пользователя"

 

Ладно, так что куда добавлять чтобы аккаунты сохранялись?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16Shadows

Напрягите мозги и подумайте. Я Вам проблему и решение объяснил. Просто так мало кто за Вас это сделает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.