MySQL - Spielerdaten laden (Integer, String)

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


    habe ein Probelm. Ich verwende die MYQL Version R5 (Nur zum Testen) und komme nicht weiter,
    Ich möchte die Accounts nach dem Login laden und in eine Variable logischerweise speichern.


    Accounts laden:
    stock AccountLaden(playerid){


    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new query[200];
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);



    format(SpielerInfo[playerid][pSkin], 10, "%s", mysql_GetStr("accounts", "skin", "player", SpielerInfo[playerid][pName]));
    format(SpielerInfo[playerid][pLevel], 10, "%s", mysql_GetStr("accounts", "score", "player", SpielerInfo[playerid][pName]));
    format(SpielerInfo[playerid][pGeld], 60, "%i", mysql_GetInt("accounts", "geld", "player", SpielerInfo[playerid][pName]));

    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);

    SetTimerEx("GiveSkinPlayerAuto", 100, false, "i", playerid);


    loggedin[playerid] = true;
    }

    return 1;
    }


    mysql_GetStr & mysql_GetInt:
    stock mysql_GetStr(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_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 = '%i'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    Die Spalten geld, skin und level sind in der Datenbank als Integer


    Die Abfragen
    format(SpielerInfo[playerid][pSkin], 10, "%s", mysql_GetStr("accounts", "skin", "player", SpielerInfo[playerid][pName]));
    format(SpielerInfo[playerid][pLevel], 10, "%s",
    mysql_GetStr("accounts", "score", "player",
    SpielerInfo[playerid][pName]));

    funktionieren prima!


    Jedoch funktioniert das Geld nicht zu laden. Egal ob ich es als Integer konvertiere oder als String, was ich mich überhaupt frage warum level und skin funktionieren da es integer sind. Alle mögliche versuche haben nicht funktioniert.


    Kann mir einer helfen?

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • stock AccountLaden(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new query[200];
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "skin", "player", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "score", "player", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "geld", "player", SpielerInfo[playerid][pName]);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);
    SetTimerEx("GiveSkinPlayerAuto", 100, false, "i", playerid);
    loggedin[playerid] = true;
    }
    return 1;
    }


    stock mysql_GetStr(Table[], Field[], Where[], Is[])
    {
    new query[128], retVal[64];
    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(retVal);
    mysql_free_result();
    return retVal;
    }


    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;
    }


    Teste es mal so.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Beitrag von palwal ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Sorry, hab ich vergessen weg zu machen.
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "skin", "player", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "score", "player", SpielerInfo[playerid][pName]);

  • [20:25:26] CMySQLHandler::Query(SELECT skin FROM accounts WHERE player = 'palwal') - Successfully executed.


    [20:25:26] >> mysql_store_result( Connection handle: 1 )


    [20:25:26] CMySQLHandler::StoreResult() - Result was stored.


    [20:25:26] >> mysql_fetch_int( Connection handle: 1 )


    [20:25:26] CMySQLHandler::FetchRow() - Return: 2


    [20:25:26] >> mysql_free_result( Connection handle: 1 )


    [20:25:26] CMySQLHandler::FreeResult() - Result was successfully free'd.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(accounts); - Escaped 8 characters to accounts.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(score); - Escaped 5 characters to score.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(player); - Escaped 6 characters to player.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(palwal); - Escaped 6 characters to palwal.


    [20:25:26] >> mysql_query( Connection handle: 1 )


    [20:25:26] CMySQLHandler::Query(SELECT score FROM accounts WHERE player = 'palwal') - Successfully executed.


    [20:25:26] >> mysql_store_result( Connection handle: 1 )


    [20:25:26] CMySQLHandler::StoreResult() - Result was stored.


    [20:25:26] >> mysql_fetch_int( Connection handle: 1 )


    [20:25:26] CMySQLHandler::FetchRow() - Return: 1


    [20:25:26] >> mysql_free_result( Connection handle: 1 )


    [20:25:26] CMySQLHandler::FreeResult() - Result was successfully free'd.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(accounts); - Escaped 8 characters to accounts.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(geld); - Escaped 4 characters to geld.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(player); - Escaped 6 characters to player.


    [20:25:26] >> mysql_real_escape_string( Connection handle: 1 )


    [20:25:26] CMySQLHandler::EscapeString(plwal); - Escaped 6 characters to plwal.


    [20:25:26] >> mysql_query( Connection handle: 1 )


    [20:25:26] CMySQLHandler::Query(SELECT geld FROM accounts WHERE player = 'plwal') - Successfully executed.


    [20:25:26] >> mysql_store_result( Connection handle: 1 )


    [20:25:26] CMySQLHandler::StoreResult() - Result was stored.


    [20:25:26] >> mysql_fetch_int( Connection handle: 1 )


    [20:25:26] >> mysql_free_result( Connection handle: 1 )


    [20:25:26] CMySQLHandler::FreeResult() - Result was successfully free'd.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Ist das ein Fehler vom Kopieren, oder ist das tatsächlich so?
    [20:25:26] CMySQLHandler::Query(SELECT geld FROM accounts WHERE player = 'plwal') - Successfully executed.
    "plwal" als Name?


    Bei den anderen beiden steht nämlich "palwal".

  • nein hab mich immer mit palwal eingeloggt oO


    [20:25:26] CMySQLHandler::Query(SELECT geld FROM accounts WHERE player = 'pSOHlwal') - Successfully executed.


    es steht SOH dabei was aber nicht mitkopiert wurde

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Interessant, irgendwie verbiegt der da was bei der Rückgabe.
    Schreib es mal so:
    stock mysql_GetStr(Table[], Field[], Where[], Is[])
    {
    new query[128], retVal[64];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, query);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, query);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(retVal);
    mysql_free_result();
    return retVal;
    }


    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, query);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, query);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Komisch, das habe ich so noch nie gesehen.
    Teste es mal so:


    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "skin", "player", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "score", "player", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "geld", "player", SpielerInfo[playerid][pName]);

    zu:
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "skin", "player", SpielerInfo[playerid][pName]);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "score", "player", SpielerInfo[playerid][pName]);
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "geld", "player", SpielerInfo[playerid][pName]);


    Wenn es nicht geht, nochmal den MySQL Log posten.


    Hast du zufällig eine mehrzeilige Meldung mit vielen Zahlen im Compiler?


    Edit:
    Unabhängig davon, hast du im enum nur
    pName,
    stehen?
    Wenn ja, ändere das zu
    pName[MAX_PLAYER_NAME],

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()