MySQL Daten werden nicht gespeichert

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 Breadfish-User,
    Ich schreibe gerade mein Script auf MySQL um und habe festgestellt, dass die Daten gar nicht gespeichert werden.


    Habe beim Login bzw. nach der Registration des Spielers:
    SetPVarInt(playerid,"Eingeloggt",1);


    Bei OnPlayerDisConenct:
    SavePlayer(playerid);


    Und hier die Funktion SavePlayer:
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Deaths", Player[playerid][Deaths], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Kills", Player[playerid][Kills], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Points", Player[playerid][Pkt], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Wantedlevel", Player[playerid][Wantedlevel], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Admin", Player[playerid][Admin], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Drugs", Player[playerid][Drugs], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Spawn", Player[playerid][spawnc], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "WantedVariable", Player[playerid][WVar], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "HausVariable", Player[playerid][HVar], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Shotgunskill", Player[playerid][Shotgun], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "SawnOff", Player[playerid][SawnOff], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Spas12", Player[playerid][Spas12], "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Premium", Player[playerid][VIP], "Name", Player[playerid][eName]);
    mysql_SetString("accounts", "Rank", string_rank, "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Score", GetPlayerScore(playerid), "Name", Player[playerid][eName]);
    mysql_SetInt("accounts", "Deaths", knastzeit[playerid], "Name", Player[playerid][eName]);
    }
    }
    return 1;
    }


    Edit: Es steht immer nur der Wert "Null" in der Tabelle

    Einmal editiert, zuletzt von Zcelo12 ()

  • Was soll der unsinnige Doppelpost denn bitte?
    Les mal bitte die Forenregeln, denn das ist klar untersagt!


    Nun zu Deinem Problem:


    Wie wäre es denn mal, wenn Du uns Deine Funktion
    mysql_setInt gibst, dass wir Dir überhaupt helfen können?


    Schreib mir die mal (nicht privat - hier im Thread!).

  • Wieso unsinnig?
    Ich habe seit einer Woche hier nicht reingeschaut, darf man dass dann nicht?


    Naja egal:
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

  • Also mal abgesehen von zwei, drei Schönheitsfehlern habe
    ich im Prinzip jetzt nicht gefunden.


    Das Problem könnte möglicher Weise damit zusammenhängen,
    dass Du die String, bei mysql_real_escape_string nochmal
    neu definieren musst.


    Aber ganz sicher bin ich mir da auch nicht.



    Probiers einfach mal so:


    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    new tab[50], field[50], where[50], user[50];
    mysql_real_escape_string(Table, tab);
    mysql_real_escape_string(Field, field);
    mysql_real_escape_string(Where, where);
    mysql_real_escape_string(Where2, user);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE %s = '%s'", tab, field, To, where, user);
    mysql_query(query);
    return true;
    }

  • Habe ich so gemacht.
    Jedoch wird es immernoch nicht gespeichert.
    Das ist i.wie komisch. Unter einem Befehl /stats wird das Geld angezeigt jedoch nach dem Disconnect
    nicht gespeichert.

  • 1. Wird vielleicht die Verbindung zur Datenbank unterbrochen ?
    2. Welches Plugin ( sry wenn das schon genannt wurde ^^ )
    3. Sind die Feldnamen auch richtig ( sollte eig. kein Unterschied machen ;) )

    Zitat
    Code
    mysql_SetInt("accounts", "Deaths", knastzeit[playerid], "Name", Player[playerid][eName]);


    Das mit "Deaths" imd knastzeit[playerid] musst du mir noch einmal erklären ;)


    Übrigens habe ich genau das gleiche Problem, allerdings habe ich es nur bei Strings ;)


    Tion

  • Das mit Deaths und knastzeit[playerid] war lediglich eine verwechslung. Danke :D
    So, dass Problem besteht jedoch immernoch. Ich benutze das MySQL Plugin R5 by G-sTyLeZzZ.
    Falls es jemandem hilft, habe ich die mysql_log mal angehängt.


    lg