MySQL Speicher Problem

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
  • Guten Abend,
    Ich habe heute angefangen, mit MySQL zu scripten, und bin daher noch ein Neuling.
    Ich habe ein Problem mit dem abspeichern, des Geldes, in der Datenbank habe ich 1500$, das was auch stimmt.
    Wenn ich aber dann im Ingame essen kaufe (-1$), dann steht in der Datenbank immer noch 1500$.
    Ich bin auch offline gegangen, und habe die Seite auch aktualisiert von phpMyAdmin.


    SavePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt] == 0)return 1;
    new query[128];
    format(query,sizeof(query),"UPDATE User SET level='%i',Geld='%i',skinid='%i',adminlevel='%i',fraktion='%i' WHERE ID='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][ID],sInfo[playerid][skinid],sInfo[playerid][adminlevel],sInfo[playerid][fraktion]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    enum PlayerInfo
    {
    eingeloggt,
    level,
    ID,
    skinid,
    adminlevel,
    fraktion
    }
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    sInfo[playerid][skinid] = cache_get_field_content_int(0,"Skin",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][ID] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"Geld",dbhandle));
    SetPlayerSkin(playerid,sInfo[playerid][skinid]);
    sInfo[playerid][adminlevel] = cache_get_field_content_int(0,"Admin",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"Fraktion",dbhandle);
    Ich hoffe ihr könnt mir helfen.


    PS: Ich habe mir Tutorials von MrMonatHD angeschaut, daher habe ich das :)


    Grüße,
    TheBester

  • Geladen werden die Stats aber, oder?
    Wenn ja, kannst du mal dein OnPlayerDisconnect zeigen, sofern SavePlayer(playerid) dort aufgerufen wird.


    (Ich antworte mit Absicht hier und nicht in der PM die du mir geschickt hast, weil hier kann den Fortschritt jeder sehen und jeder kann einen Fehler finden, ich sehe auch nicht alles ^^)

  • Geladen werden sie, wenn ich sie über der Datenbank verändere.


    SavePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt] == 0)return 1;
    new query[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"UPDATE User SET level='%i',Geld='%i',skinid='%i',adminlevel='%i',fraktion='%i' WHERE username='%s'",GetPlayerScore(playerid),GetPlayerMoney(playerid),sInfo[playerid][ID],sInfo[playerid][skinid],sInfo[playerid][adminlevel],sInfo[playerid][fraktion],name);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    ResetPlayer(playerid)
    {
    sInfo[playerid][level] = 0;
    sInfo[playerid][eingeloggt] = 0;
    sInfo[playerid][ID] = 0;
    sInfo[playerid][skinid] = 0;
    sInfo[playerid][adminlevel] = 0;
    sInfo[playerid][fraktion] = 0;
    return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    ResetPlayer(playerid);
    return 1;
    }

  • Ok, sieht doch alles ganz gut aus.


    Mach mal:
    SavePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt] == 0)return 1;
    new query[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"UPDATE User SET level='%i',Geld='%i',skinid='%i',adminlevel='%i',fraktion='%i' WHERE username='%s'",GetPlayerScore(playerid),GetPlayerMoney(playerid),sInfo[playerid][ID],sInfo[playerid][skinid],sInfo[playerid][adminlevel],sInfo[playerid][fraktion],name);
    printf("1) %s",query);
    mysql_function_query(dbhandle,query,false,"","");
    printf("2) %s",query);
    return 1;
    }


    Dann zeig bitte was ausgegeben wird.
    Zudem schau bitte noch in den Debug Log oder Error log deines MySQL Plugins, bzw. mach den Debug Mode an, falls er aus ist, und gib uns das, was dort gezeigt wird.
    Überprüf auch nochmal, ob du alle Felder richtig geschrieben hast, im Query sowie in der Datenbank.



  • Habe es versucht, in der Konsole steht dann auch z.B.: autoschein='1'. Aber in der Datenbank steht das dann nicht


    Hier, das kommt in der mysql.log, wenn ich mich auslogge, und ein Schein gekauft habe


    [pwn][13:27:48] [ERROR] CMySQLQuery::Execute[()] - (error #1054) Unknown column 'autoschein' in 'field list'[/pwn]


    SavePlayer(playerid)
    {
    if(Spieler[playerid][eingeloggt] == 1)
    {
    new query[700],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"UPDATE ros SET level='%i',skinid='%i',adminlevel='%i',fraktion='%i',geld='%i',waffenschein='%i',handy='%i',autoschein='%i',bikeschein='%i',lkwschein='%i',bootschein='%i',angelschein='%i',flugschein='%i' WHERE id='%i'",
    GetPlayerScore(playerid),Spieler[playerid][skinid],Spieler[playerid][adminlevel],Spieler[playerid][fraktion],GetPlayerMoney(playerid),Spieler[playerid][waffenschein],Spieler[playerid][handy],Spieler[playerid][autoschein],Spieler[playerid][bikeschein],Spieler[playerid][lkwschein],Spieler[playerid][bootschein],Spieler[playerid][angelschein],Spieler[playerid][flugschein],playerid);
    printf("%s",query);
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }

  • Ja das sagt dir doch schon alles was du wissen musst:

    Zitat

    (error #1054) Unknown column 'autoschein' in 'field list'


    Unbekannte Spalte "autoschein" in der Felder Liste.


    Bedeutet: Es gibt in der Tabelle keine "autoschein" Spalte, entweder vergessen, oder verschrieben.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen