MySQL Speichert Accounts nicht ab

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 Community,


    Ich habe da ein komisches Problem.
    Mein Script connectet ohne Probleme mit dem MySQL Server
    aber es werden keine Accounts gespeichert.
    Laut MySQL.log im debug modus, speichert er auch alles (wen ich das richtig verstehe.)
    Aber in der accounts Tabelle, ist nach disconnect nichts zu finden, und auch beim erneuten Login, soll ich mich wieder Registrieren.
    Habe das Problem zum ersten mal, und sonzt noch nie Probleme gehabt.


    Ich Wäre euch zu tiefst verbunden, wen ihr mir helfen könntet. da ich nicht weiter machen kann, wen das system nicht Läuft.
    Riesen Danke im vorraus


    Hier mal der auszug aus dem MySQL-Debug.log


    Und hier die scriptauszüge.
    #define SQL_HOST "46.4.77.199"
    #define SQL_USER "[s]ZENSIERT[/s]"
    #define SQL_PASS "[s]ZENSIERT[/s]"
    #define SQL_DATA "server_db_blade_one"


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pKills,
    pTode,
    Float:pHealth,
    pAdmin,
    //Float:xKord,
    //Float:yKord,
    //Float:zKord,
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    public OnGameModeInit()
    {
    mysql_debug(1);
    Connect_To_Database();
    SetGameModeText("TEST");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    DeletePVar(playerid,"Eingeloggt");
    return 1;
    }


    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurtz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    return 1;
    }
    }
    else
    {
    Kick(playerid);
    }
    }


    stock Connect_To_Database()
    {
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(mysql_ping() == 1)
    {

    print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    return true;
    }
    else
    {

    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(mysql_ping() == 1)
    {
    print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
    return true;
    }
    else
    {

    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Der Server wird nun beendet!");
    SendRconCommand("exit");
    return true;
    }
    }
    }
    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }
    stock mysql_CheckAccount(playerid)
    {
    new Query[128],Name[MAX_PLAYER_NAME],count;
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);
    format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(Query);
    mysql_store_result();
    count = mysql_num_rows();
    mysql_free_result();
    return count;
    }
    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%s', '%s')", Name, pass);
    mysql_query(query);
    return true;
    }
    stock mysql_ReturnPasswort(Name[])
    {
    new query[130], Get[130];
    mysql_real_escape_string(Name, Name);
    format(query, 128, "SELECT `passwort` FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][yyKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][zzKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][xKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][yKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][zKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][pJob] = mysql_GetInt("accounts", "Job", "Name", SpielerInfo[playerid][pName]);
    //SpielerInfo[playerid][pJoblevel] = mysql_GetInt("accounts", "Joblevel", "Name", SpielerInfo[playerid][pName]);
    //SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
    SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);
    SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
    }
    return 1;
    }
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    //new Float:xxKord,Float:yyKord,Float:zzKord;
    //GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    // mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetInt("accounts", "Job", SpielerInfo[playerid][pJob], "Name", SpielerInfo[playerid][pName]);
    //mysql_SetInt("accounts", "Joblevel", SpielerInfo[playerid][pJoblevel], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }
    stock mysql_GetString(Table[], Field[], Where[], Is[])
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    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(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    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;
    }
    stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(To, To);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    /*stock mysql_SetFloat(Table[], Field[], Float: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` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    */
    stock mysql_SetFloat(Table[], Field[], Float: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 = '%f' WHERE %s = '%s'",Table, Field, To, Where, Where2);
    mysql_query(query);
    format(query,128, "");
    return true;
    }
    Edit 2: auch mysql server neustart kein erfolg
    //edit: irgendwie war das grad ein Grammatikalischer Krautsalat

  • Allso, meinst du beim stock SavePlayer


    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    so:
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    //new Float:xxKord,Float:yyKord,Float:zzKord;
    //GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    // mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetInt("accounts", "Job", SpielerInfo[playerid][pJob], "Name", SpielerInfo[playerid][pName]);
    //mysql_SetInt("accounts", "Joblevel", SpielerInfo[playerid][pJoblevel], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }
    So Funktioniert es leider immernoch nicht.
    bin für jede weitere Hilfe dankbar.
    MFG

  • Ich bitte dich beim Speichern einen query zu verwenden.



    new query[500];
    format(query,sizeof(query),"UPDATE `accounts` SET `Level` = '%d', `Kills`= '%d', `Tode` = '%d', `Geld` = '%d', `Admin`= '%d', `Health` = '%f' WHERE = '%s'",SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pHealth]);
    mysql_query(query);
    //Sollte stimmen habe das jetzt nur kuzr hier im Editor gemacht

    MFG

  • Meinst du so?:
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {

    new query[500];
    format(query,sizeof(query),"UPDATE `accounts` SET `Level` = '%d', `Kills`= '%d', `Tode` = '%d', `Geld` = '%d', `Admin`= '%d', `Health` = '%f' WHERE = '%s'",SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pHealth]);
    mysql_query(query);
    //new Float:xxKord,Float:yyKord,Float:zzKord;
    //GetPlayerPos(playerid,xxKord,yyKord,zzKord);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    /* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
    // mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
    //mysql_SetInt("accounts", "Job", SpielerInfo[playerid][pJob], "Name", SpielerInfo[playerid][pName]);
    //mysql_SetInt("accounts", "Joblevel", SpielerInfo[playerid][pJoblevel], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }


    Geht leider Nicht :/


    //edit: Kann mir wer genauer erklären, wie das nun geht, arbeite noch nicht lange mit MySQL und muss da erstmal hintersteigen


    //Push :!: