MySQL Speicherung

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • [22:11:47] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE user SET username='HellYeah',Level='0',Geld='1800',Geschl", callback: "(null)", format: "(null)"
    [22:11:47] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [22:11:47] [DEBUG] mysql_tquery - scheduling query "UPDATE user SET username='HellYeah',Level='0',Geld='1800',Geschlecht='1',Fraktion='0',Skin='7',Fraktionsrang='0',Admin='1338', FirstLog='0', Exp='0', Personalausweis='1', Fahrlic='1', Motorradlic='0', Fluglic='0', Gunlic='0', Lkwlic='0', Laune='0', Bankkonto='0', Bank='0', Bankart='0', Job='0', Jobskill='0', Pistolenskill='0', Gewehrskill='0', Shotgunskill='0', SMGskill='0', Kopfgeld='0', Drugs='0',Wanteds='0', Arrested='0', Kills='0', Tode='0', Nummer='0', HandyID='0', Handyguthaben='0', Handyakku='0', GPS"..
    [22:11:47] [DEBUG] CMySQLQuery::Execute[()] - starting query execution
    [22:11:47] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='49'' at line 1
    [22:11:47] [DEBUG] CMySQLQuery::Execute[()] - error will be triggered in OnQueryError
    [22:11:47] [DEBUG] CMySQLQuery::Execute[()] - data being passed to ProcessCallbacks()
    [22:11:47] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called


    if(GetPVarInt(playerid,"Eingeloggt")==0)return 1;
    new query[1024],mainquery[2056],Float:ax,Float:ay,Float:az,Float:hp;
    GetPlayerPos(playerid,ax,ay,az);
    format(query,sizeof(query),"UPDATE user SET username='%s',Level='%d',Geld='%d',Geschlecht='%i',Fraktion='%d',Skin='%d',Fraktionsrang='%d',Admin='%d', FirstLog='%d', Exp='%d', Personalausweis='%i', Fahrlic='%i', Motorradlic='%i', Fluglic='%i', Gunlic='%i', Lkwlic='%i', Laune='%d', Bankkonto='%i', Bank='%d', Bankart='%i', Job='%i', Jobskill='%d', Pistolenskill='%d', Gewehrskill='%d', Shotgunskill='%d', SMGskill='%d', Kopfgeld='%d', Drugs='%d',",
    SpielerName(playerid),GetPlayerScore(playerid),GetPlayerMoney(playerid),SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pFraktion],GetPlayerSkin(playerid),SpielerInfo[playerid][pFraktionsrang],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pFirstLog],SpielerInfo[playerid][pExp],SpielerInfo[playerid][pPerso],SpielerInfo[playerid][pFahrlic],SpielerInfo[playerid][pMotorradlic],SpielerInfo[playerid][pFluglic],SpielerInfo[playerid][pGunlic],
    SpielerInfo[playerid][pLKWlic],SpielerInfo[playerid][pLaune],SpielerInfo[playerid][pBankkonto],SpielerInfo[playerid][pBank],SpielerInfo[playerid][pBankart],SpielerInfo[playerid][pJob],SpielerInfo[playerid][pJobskill],SpielerInfo[playerid][pHandfeuerskill],SpielerInfo[playerid][pGewehrskill],SpielerInfo[playerid][pShotgunskill],SpielerInfo[playerid][pSMGskill],SpielerInfo[playerid][pKopfgeld],SpielerInfo[playerid][pDrugs]);
    strcat(mainquery,query);
    strdel(query,0,sizeof(query));
    format(query,sizeof(query),"Wanteds='%d', Arrested='%i', Kills='%d', Tode='%d', Nummer='%d', HandyID='%d', Handyguthaben='%d', Handyakku='%d', GPSApp='%i', AndereApp='%i', LogoutX='%f', LogoutY='%f', LogoutZ='%f', LogoutHealth='%f', Warns='%d', MarriedTo='%s', Muted='%d', Laptop='%i', Zigarreten='%d', Tot='%i', Kirche='%i', PlayTime='%d', Strafpunkte='%d', Aktien='%d', AktienWert='%d', WHERE id='%i'",
    SpielerInfo[playerid][pWanteds],SpielerInfo[playerid][pArrested],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pNumber],SpielerInfo[playerid][pHandyID],SpielerInfo[playerid][pHandyguthaben],SpielerInfo[playerid][pHandyakku],SpielerInfo[playerid][pGPSApp],SpielerInfo[playerid][pAndereApp],ax,ay,az,GetPlayerHealth(playerid,hp),
    SpielerInfo[playerid][pWarns],SpielerInfo[playerid][pMarriedTo],SpielerInfo[playerid][pMuted],SpielerInfo[playerid][pLaptop],SpielerInfo[playerid][pZigaretten],SpielerInfo[playerid][pTot],SpielerInfo[playerid][pKirche],SpielerInfo[playerid][pPlayMinutes],SpielerInfo[playerid][pStrafpunkte],SpielerInfo[playerid][pAktien],SpielerInfo[playerid][pAktienWert],SpielerInfo[playerid][pID]);
    strcat(mainquery,query);
    strdel(query,0,sizeof(query));
    mysql_function_query(dbhandle,mainquery,false,"","");



    Weiss da einer Rat? :c

  • @.Makaveli: Ok, danke funktioniert nun.
    Jetzt habe ich mal wieder ein paar dinge erweitert und es buggt wieder rum.


    SQL
    [10:16:46] [DEBUG] mysql_tquery - scheduling query "UPDATE user SET username='HellYeah',Level='0',Geld='1700',Geschlecht='1',Fraktion='0',Skin='7',Fraktionsrang='0',Admin='1338', FirstLog='0', Exp='0', Personalausweis='1', Fahrlic='1', Motorradlic='0', Fluglic='0', Gunlic='0', Lkwlic='0', Laune='0', BankkoWanteds='0', Arrested='0', Kills='0', Tode='0', Nummer='0', HandyID='0', Handyguthaben='0', Handyakku='0', GPSApp='0', AndereApp='0', LogoutX='138.913360', LogoutY='-69.589248', LogoutZ='1.429687', LogoutHealth='0.000000', LastInterior='0', Warns='0', Mar B"..
    [10:16:46] [DEBUG] CMySQLQuery::Execute[()] - starting query execution
    [10:16:46] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Bootlic='0', ExpTime='0' WHERE id='49'' at line 1
    [10:16:46] [DEBUG] CMySQLQuery::Execute[()] - error will be triggered in OnQueryError
    [10:16:46] [DEBUG] CMySQLQuery::Execute[()] - data being passed to ProcessCallbacks()
    [10:16:46] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called



    stock SavePlayer(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt")==0)return 1;
    new query[256],mainquery[1024],Float:hp;
    GetPlayerHealth(playerid,hp);
    format(query,sizeof(query),"UPDATE user SET username='%s',Level='%d',Geld='%d',Geschlecht='%i',Fraktion='%d',Skin='%d',Fraktionsrang='%d',Admin='%d', FirstLog='%d', Exp='%d', Personalausweis='%i', Fahrlic='%i', Motorradlic='%i', Fluglic='%i', Gunlic='%i', Lkwlic='%i', Laune='%d', Bankkonto='%i', Bank='%d', Bankart='%i', Job='%i', Jobskill='%d', Pistolenskill='%d', Gewehrskill='%d', Shotgunskill='%d', SMGskill='%d', Kopfgeld='%d', Drugs='%d',",
    SpielerName(playerid),GetPlayerScore(playerid),GetPlayerMoney(playerid),SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pFraktion],GetPlayerSkin(playerid),SpielerInfo[playerid][pFraktionsrang],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pFirstLog],SpielerInfo[playerid][pExp],SpielerInfo[playerid][pPerso],SpielerInfo[playerid][pFahrlic],SpielerInfo[playerid][pMotorradlic],SpielerInfo[playerid][pFluglic],SpielerInfo[playerid][pGunlic],
    SpielerInfo[playerid][pLKWlic],SpielerInfo[playerid][pLaune],SpielerInfo[playerid][pBankkonto],SpielerInfo[playerid][pBank],SpielerInfo[playerid][pBankart],SpielerInfo[playerid][pJob],SpielerInfo[playerid][pJobskill],SpielerInfo[playerid][pHandfeuerskill],SpielerInfo[playerid][pGewehrskill],SpielerInfo[playerid][pShotgunskill],SpielerInfo[playerid][pSMGskill],SpielerInfo[playerid][pKopfgeld],SpielerInfo[playerid][pDrugs]);
    strcat(mainquery,query);
    strdel(query,0,sizeof(query));
    format(query,sizeof(query),"Wanteds='%d', Arrested='%i', Kills='%d', Tode='%d', Nummer='%d', HandyID='%d', Handyguthaben='%d', Handyakku='%d', GPSApp='%i', AndereApp='%i', LogoutX='%f', LogoutY='%f', LogoutZ='%f', LogoutHealth='%f', LastInterior='%d', Warns='%d', MarriedTo='%s', Muted='%d', Laptop='%i', Zigaretten='%d', Tot='%i', Kirche='%i', PlayTime='%d', Strafpunkte='%d', Aktien='%d', AktienWert='%d', Telefonbuch='%i', LSD='%d',",
    SpielerInfo[playerid][pWanteds],SpielerInfo[playerid][pArrested],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pNumber],SpielerInfo[playerid][pHandyID],SpielerInfo[playerid][pHandyguthaben],SpielerInfo[playerid][pHandyakku],SpielerInfo[playerid][pGPSApp],SpielerInfo[playerid][pAndereApp],GetX(playerid),GetY(playerid),GetZ(playerid),hp,GetPlayerInterior(playerid),
    SpielerInfo[playerid][pWarns],SpielerInfo[playerid][pMarriedTo],SpielerInfo[playerid][pMuted],SpielerInfo[playerid][pLaptop],SpielerInfo[playerid][pZigaretten],SpielerInfo[playerid][pTot],SpielerInfo[playerid][pKirche],SpielerInfo[playerid][pPlayMinutes],SpielerInfo[playerid][pStrafpunkte],SpielerInfo[playerid][pAktien],SpielerInfo[playerid][pAktienWert],SpielerInfo[playerid][pPhonebook],SpielerInfo[playerid][pLSD]);
    strcat(mainquery,query);
    strdel(query,0,sizeof(query));
    format(query,sizeof(query)," Bootlic='%i', ExpTime='%d' WHERE id='%i'",
    SpielerInfo[playerid][pBootlic],SpielerInfo[playerid][pExpTime],SpielerInfo[playerid][pID]);
    strcat(mainquery,query);
    strdel(query,0,sizeof(query));
    mysql_function_query(dbhandle,mainquery,false,"","");
    return 1;
    }

  • Dein Query zeigt allgemein Schwächen auf, du kannst dir ja mal die entsprechenden Passagen in meinem Tutorial in meiner Signatur anschauen (siehe String-Begrenzer, Mehrzeilig Schreiben, Backticks). Eine gute Schreibweise hilft auch ungemein beim Debugging. Dabei kannst du auch Ressourcen sparen und deine Performance erhöhen, da der jetzige Weg sehr kompliziert und unübersichtlich ist.

  • Naja, dann beginne doch damit zu debuggen. Lass dir den kompletten Query ausgeben und überprüfe ihn Stück für Stück und gehe dem Problem langsam auf den Grund. Meiner Meinung nach beginnt Debugging jedoch bei einem übersichtlichen Codingstil, denn in einem Wirrwarr ist es erfahrungsgemäß schwerer ein Problem zu lösen als in einem übersichtlichen Stück Code.

  • Deshalb sage ich, lasse dir den kompletten Query ausgeben. Im Logfile wird dir nicht der komplette Query ausgegeben und ist daher nicht fürs Debugging geeignet. Query ausgeben lassen, Probleme am Query suchen, entsprechenden Code überprüfen und Code verbessern.