Spieler Daten werden nicht gespeichert

Aus gegebenem Anlass: Sichert eure Backupcodes wenn ihr die Zwei-Faktor-Authentifizierung aktiviert habt!

Infos dazu findet ihr nochmal hier

  • Moin moin,

    Alter, Geschlecht, und die SkinID wird komischerweise nicht gespeichert..


  • Moin Meister.

    Du solltest dich bei deinem Code mehrere Sachen fragen.

    Ich habe dir als aller erstes den Code minimal umgeschrieben.


    Wird savePlayer ausgeführt?

    Bist du angemeldet? (peingeloggt)

    Was spuckt der Query Print aus sowie die MySQL Log?

    "alter" würde ich umbenennen da es ein SQL Command an sich schon ist, wobei ich meine das wäre bei mysql_format nicht wichtig, dennoch schaus dir an!


    Zum von mir editierten Quellcode:

    Man hätte man noch mehr umschreiben können, will dich aber nicht groß verwirren.


  • Hey, danke für deine Antwort!

    Code
    1. 19:44:55] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '´user´ SET ´skin´='60',´alter´='23',´geschlecht´='1',´neuling´='0',...' at line 1
    2. [19:44:55] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError
  • Weiß jetzt nicht ob das wirklich der Fehler ist.. aber integer werte packt man bei mysql nicht in Anführungszeichen. Probiere es mal ohne.

    Code
    1. mysql_format(dbhandle,query,sizeof(query),"UPDATE user SET skin='%d',alter='%d',geschlecht='%d',neuling´='%d',leben='%.0f',russi='%.0f' WHERE ID='%i'",GetPlayerSkin(playerid),
    2. pInfo[playerid][palter],pInfo[playerid][pgeschlecht],pInfo[playerid][pneuling],pInfo[playerid][pleben],pInfo[playerid][prussi],pInfo[playerid][pid]),

    So funktionierts irgendwie auch nicht

  • Ich meinte die Integer werte, nicht die Spaltennamen


    Versuche mal diese Querry

    SQL
    1. "UPDATE ´user´ SET ´skin´=%d,´alter´=%d,´geschlecht´=%d,´neuling´=%d,´leben´='%.0f',´russi´='%.0f' WHERE ´ID´='%i"

    if (1) {return 1};

  • Du brauchst in deinem Falle die ´´ und '' nicht.

    '' Benötigst du beim String, bzw. SET frakrang='%e', dort liegt aber definitiv nicht der Fehler.


    Glaube es liegt am ´user´


    Schreibe es mal so: (spielerjahr = alter) Falls du es genauso übernimmst, bitte in der Datenbank anpassen.

  • Ohne Erfolg!

    Weder das Geschlecht & Alter speichert sich nicht

  • Versuch mal so


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Alter, Geschlecht, und die SkinID wird komischerweise nicht gespeichert..

    Das liegt wohl mit daran, das deine Escape Zeichen falsch sind. Du verwendest ´ brauchst aber `

    Richtig wäre also:

    SQL
    1. UPDATE `user` SET `skin` = '%d', `alter` = '%d', `geschlecht` = '%d', `neuling` = '%d', `leben` = '%.0f', `russi` = '%.0f' WHERE `ID` = '%i'

    Um zu überprüfen, ob deine SQL-Anfrage korrekt ist, kannst du auch auf verschiedene Online-Tools zurückgreifen (Beispiel: https://www.eversql.com/sql-syntax-check-validator/)

  • Das liegt wohl mit daran, das deine Escape Zeichen falsch sind. Du verwendest ´ brauchst aber `

    Richtig wäre also:

    SQL
    1. UPDATE `user` SET `skin` = '%d', `alter` = '%d', `geschlecht` = '%d', `neuling` = '%d', `leben` = '%.0f', `russi` = '%.0f' WHERE `ID` = '%i'

    Um zu überprüfen, ob deine SQL-Anfrage korrekt ist, kannst du auch auf verschiedene Online-Tools zurückgreifen (Beispiel: https://www.eversql.com/sql-syntax-check-validator/)

    Danke, hat funktioniert!

    btw, danke an Alle :)


    Hätte da noch einen Warning, denn ich irgendwie nicht wegbekomme


    warning 202: number of arguments does not match definition <-- Zeile 191


  • ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,string,"Testserver,"Dein Account wurde gefunden bitte Logge dich ein ","OK","");


    zu


    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Testserver,"Dein Account wurde gefunden bitte Logge dich ein ","OK","");

  • ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,string,"Testserver,"Dein Account wurde gefunden bitte Logge dich ein ","OK","");


    zu


    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Testserver,"Dein Account wurde gefunden bitte Logge dich ein ","OK","");

    Funktioniert, jedoch steht dann nicht da wie viele Versuche er schon versucht hat ^^

  • Wenn du den String, also deine Einlog versuche anzeigen willst im Titel oben dann nutze es so
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,string,"Dein Account wurde gefunden bitte Logge dich ein ","OK","");