Fehler beim Speichern in die Datebank (Query zu groß?)

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
  • Hallo, habe ein komisches Problem.


    Sobald sich ein Spieler ausloggt, sollen seine Daten gespeichert werden.
    Beim Ausloggen rufe ich das public Update(playerid); auf.
    In diesem public werden alle Daten gespeichert, die Variabeln haben ganz sicher die richtigen Werte!


    Ich erstelle einen sehr großen Query und sende diesen an die Datenbank. Doch die Datenbank bleibt unverändert.
    Ich lasse den Query als Printausgabe ausgeben (dabei stürtz der Server ab) und kopiere die ausgabe dann und füge sie als SQL befehl ein --> Es funktioniert.


    Also ist an der Syntax soweit nichts falsch, sobald ich es manuell als SQL Befehl eingebe, wird die Tabelle aktualisiert.


    Ist die Query zu lang? Bei der Print ausgabe stürzt der Server auch ab, nachdem es in die Serverlog geschrieben wurde. Nehme ich die Printausgabe raus, läuft er wunderbar weiter.
    Der Query hat ca. (min)3250-3500 Zeichen, werden halt mehr wenn der Spieler mehr zu speichern hat.


    Hier mein Quellcode:
    public Update(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    GetPlayerPos(playerid,Spieler[playerid][LastX],Spieler[playerid][LastY],Spieler[playerid][LastZ]);
    GetPlayerFacingAngle(playerid,Spieler[playerid][LastA]);
    gettime(Spieler[playerid][LastHour],Spieler[playerid][LastMinute],Spieler[playerid][LastSecond]);
    j_getdate(Spieler[playerid][LastYear],Spieler[playerid][LastMonth],Spieler[playerid][LastDay]);
    Spieler[playerid][Bargeld] = j_GetPlayerMoney(playerid, false);
    Spieler[playerid][Level] = GetPlayerScore(playerid);
    GetPlayerHealth(playerid,Spieler[playerid][Leben]);
    GetPlayerArmour(playerid,Spieler[playerid][Armour]);
    if(aDuty[playerid])
    {
    Spieler[playerid][Leben] = 100.0;
    Spieler[playerid][Armour] = 0.0;
    }
    Spieler[playerid][LastInt] = GetPlayerInterior(playerid);
    Spieler[playerid][LastVirt] = GetPlayerVirtualWorld(playerid);
    new Query[4000];
    mysql_real_escape_string(pName[playerid],pName[playerid]);
    mysql_real_escape_string(Spieler[playerid][bangrund],Spieler[playerid][bangrund]);
    mysql_real_escape_string(Spieler[playerid][tbantime],Spieler[playerid][tbantime]);
    mysql_real_escape_string(Spieler[playerid][tbandate],Spieler[playerid][tbandate]);
    mysql_real_escape_string(Spieler[playerid][GebDate],Spieler[playerid][GebDate]);
    mysql_real_escape_string(Spieler[playerid][Geschlecht],Spieler[playerid][Geschlecht]);
    mysql_real_escape_string(Spieler[playerid][Klaeger],Spieler[playerid][Klaeger]);
    mysql_real_escape_string(Spieler[playerid][Verbrechen],Spieler[playerid][Verbrechen]);
    mysql_real_escape_string(Spieler[playerid][Handynummer],Spieler[playerid][Handynummer]);
    format(Query,sizeof(Query),"UPDATE `accounts` SET `Adminlvl` = '%d', `Leaderverwaltung` = '%d', `Bargeld` = '%d', `Bankgeld` = '%f', `Konto` = '%d', `Level` = '%d', ", Spieler[playerid][Adminlvl], (Spieler[playerid][Leaderverwaltung]) ? 1:0, Spieler[playerid][Bargeld], Spieler[playerid][Bankgeld], Spieler[playerid][Konto], Spieler[playerid][Level]);
    format(Query,sizeof(Query),"%s`LastHour` = '%d', `LastMonth` = '%d', `LastDay` = '%d', `LastMinute` = '%d', `LastSecond` = '%d', ", Query, Spieler[playerid][LastHour], Spieler[playerid][LastMonth], Spieler[playerid][LastDay], Spieler[playerid][LastMinute], Spieler[playerid][LastSecond]);
    format(Query,sizeof(Query),"%s`LastYear` = '%d', `LastInt` = '%d', `LastVirt` = '%d', `Leben` = '%f', `Armour` = '%f', ", Query, Spieler[playerid][LastYear], Spieler[playerid][LastInt], Spieler[playerid][LastVirt], Spieler[playerid][Leben], Spieler[playerid][Armour]);
    format(Query,sizeof(Query),"%s`LastX` = '%f', `LastY` = '%f', `LastZ` = '%f', `LastA` = '%f', `ban` = '%d', `Kanister` = '%d', ", Query, Spieler[playerid][LastX], Spieler[playerid][LastY], Spieler[playerid][LastZ], Spieler[playerid][LastA], (Spieler[playerid][ban]) ? 1:0, Spieler[playerid][Kanister]);
    format(Query,sizeof(Query),"%s`tban` = '%d', `bangrund` = '%s', `tbantime` = '%s', `tbandate` = '%s', `warns` = '%d', ", Query, (Spieler[playerid][tban]) ? 1:0, Spieler[playerid][bangrund], Spieler[playerid][tbantime], Spieler[playerid][tbandate], Spieler[playerid][warns]);
    format(Query,sizeof(Query),"%s`Tutorial` = '%d', `Perso` = '%d', `GebDate` = '%s', `Geschlecht` = '%s', `Zivilskin` = '%d', ", Query, Spieler[playerid][Tutorial], (Spieler[playerid][Perso]) ? 1:0, Spieler[playerid][GebDate], Spieler[playerid][Geschlecht], Spieler[playerid][Zivilskin]);
    format(Query,sizeof(Query),"%s`Fraktionsskin` = '%d', `Duty` = '%d', `Mute` = '%d', `OOCMute` = '%d', `Fraktion` = '%d', ", Query, Spieler[playerid][Fraktionsskin], Spieler[playerid][Duty], Spieler[playerid][Mute], Spieler[playerid][OOCMute], Spieler[playerid][Fraktion]);
    format(Query,sizeof(Query),"%s`Leader` = '%d', `Spawnchange` = '%d', `Rang` = '%d', `Klaeger` = '%s', `Verbrechen` = '%s', `Matspakete` = '%d', `Drogenpakete` = '%d', ", Query, (Spieler[playerid][Leader]) ? 1:0, Spieler[playerid][Spawnchange], Spieler[playerid][Rang], Spieler[playerid][Klaeger], Spieler[playerid][Verbrechen], Spieler[playerid][Matspakete], Spieler[playerid][Drogenpakete]);
    format(Query,sizeof(Query),"%s`Wanteds` = '%d', `Wantedpoints` = '%d', `Susptime` = '%d', `Drogen` = '%d', `Mats` = '%d', `Handy` = '%d', `Handynummer` = '%s', `Handygeld` = '%f', `Handyklingelton` = '%d', ", Query, Spieler[playerid][Wanteds], Spieler[playerid][Wantedpoints], Spieler[playerid][Susptime], Spieler[playerid][Drogen], Spieler[playerid][Mats], Spieler[playerid][Handy], Spieler[playerid][Handynummer], Spieler[playerid][Handygeld], Spieler[playerid][Handyklingelton]);
    format(Query,sizeof(Query),"%s`Waffenschein` = '%d', `Angelschein` = '%d', `Autoschein` = '%d', `Motorradschein` = '%d', `Flugschein` = '%d', `Bootsschein` = '%d', `LKWschein` = '%d', ", Query, (Spieler[playerid][Waffenschein]) ? 1:0, (Spieler[playerid][Angelschein]) ? 1:0, (Spieler[playerid][Autoschein]) ? 1:0, (Spieler[playerid][Motorradschein]) ? 1:0, (Spieler[playerid][Flugschein]) ? 1:0, (Spieler[playerid][Bootsschein]) ? 1:0, (Spieler[playerid][LKWschein]) ? 1:0);
    format(Query,sizeof(Query),"%s`Helm` = '%d', `Telefonbuch` = '%d', `Angel` = '%d', `Zigaretten` = '%d', `Kondome` = '%d', `Uhr` = '%d', `Lottoschein` = '%d', `Lottoanzahl` = '%d', ",Query, (Spieler[playerid][Helm]) ? 1:0, (Spieler[playerid][Telefonbuch]) ? 1:0, (Spieler[playerid][Angel]) ? 1:0, Spieler[playerid][Zigaretten], Spieler[playerid][Kondome], Spieler[playerid][Uhr], Spieler[playerid][Lottoschein], Spieler[playerid][Lottoanzahl]);
    format(Query,sizeof(Query),"%s`Haus` = '%d', `Hauscounter` = '%d', `Hotelzimmer` = '%d', `Partner` = '%s', `Ziviljob` = '%d', `Fraktionsjob` = '%d', `Medikit` = '%d', `Knast` = '%d', ", Query, Spieler[playerid][Haus], Spieler[playerid][Hauscounter], Spieler[playerid][Hotelzimmer], Spieler[playerid][Partner], Spieler[playerid][Ziviljob], Spieler[playerid][Fraktionsjob], Spieler[playerid][Medikit], Spieler[playerid][Knast]);
    format(Query,sizeof(Query),"%s`Knastzeit` = '%d', `Knastkaution` = '%d', `Beute` = '%d', `Beuteversteck` = '%d', `Verstecke` = '%d', `RobbedPetrol` = '%d', `RobbedPlanePetrol` = '%d', ", Query, Spieler[playerid][Knastzeit], Spieler[playerid][Knastkaution], Spieler[playerid][Beute], Spieler[playerid][Beuteversteck], Spieler[playerid][Verstecke], Spieler[playerid][RobbedPetrol], Spieler[playerid][RobbedPlanePetrol]);
    format(Query,sizeof(Query),"%s`RobbedDiner` = '%d', `RobbedBinco` = '%d', `RobbedBank` = '%d', `Levelpunkte` = '%d', `MaxLevelpunkte` = '%d', `jGrundgehalt` = '%d', `jGehalt` = '%d', `PayDayTime` = '%d', ", Query, Spieler[playerid][RobbedDiner], Spieler[playerid][RobbedBinco], Spieler[playerid][RobbedBank], Spieler[playerid][Levelpunkte], Spieler[playerid][MaxLevelpunkte], (Spieler[playerid][jGrundgehalt]) ? 1:0, Spieler[playerid][jGehalt], Spieler[playerid][PayDayTime]);
    format(Query,sizeof(Query),"%s`Monat` = '%d', `Bizcounter` = '%d', `gestorben` = '%d', `verletzt` = '%d', `tod` = '%d', `Krankheit` = '%d', `zQuit` = '%d', `fQuit` = '%d', `Spielstunden` = '%d'", Query, Spieler[playerid][Monat], Spieler[playerid][Bizcounter], (Spieler[playerid][gestorben]) ? 1:0, Spieler[playerid][verletzt], Spieler[playerid][tod], Spieler[playerid][Krankheit], (Spieler[playerid][zQuit]) ? 1:0, (Spieler[playerid][fQuit]) ? 1:0, Spieler[playerid][Spielstunden]);


    for(new i = 0; i < 13; i++)
    {
    new str1[20], str2[20];
    format(str1,sizeof(str1),"pWaffe %d", i);
    format(str2,sizeof(str2),"pAmmo %d", i);
    format(Query,sizeof(Query),"%s, `%s` = '%d', `%s` = '%d'", Query, str1, Spieler[playerid][pWaffe][i], str2, Spieler[playerid][pAmmo][i]);
    }


    for(new i = 0; i < sizeof BVerstecke; i++)
    {
    new bvstr[20];
    format(bvstr,sizeof(bvstr),"Versteck %d", i+1);
    format(Query,sizeof(Query),"%s, `%s` = '%d'", Query, bvstr, Spieler[playerid][Versteck][i]);
    }

    format(Query, sizeof(Query), "%s WHERE `Nickname` = '%s'", Query, pName[playerid]);
    print("Test 1");
    printf("Query:\r\n\r\n%s",Query);
    print("Test 2");
    return 1;
    }