MySQL speichert nicht

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,


    Titel sagt alles.


    Hab unter OnPlayerDisconnect diese Funktion:



    stock SaveUserStats(playerid)
    {
    if(!Spieler[playerid][Eingeloggt]) return 1;
    new query[500];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET registriert = '%d', skin = '%d', money = '%d', adminlevel = '%d', fraktion = '%d', spawnchange = '%d', rang = '%d', wanteds = '%d', wantedgrund = '%s', muted = '%d', mutetime = '%d', level = '%d', spielzeit = '%d', email = '%s' WHERE id = '%d'",
    Spieler[playerid][Registriert],
    Spieler[playerid][Skin],
    Spieler[playerid][Money],
    Spieler[playerid][Adminlevel],
    Spieler[playerid][Fraktion],
    Spieler[playerid][Spawnchange],
    Spieler[playerid][Rang],
    Spieler[playerid][Wanteds],
    Spieler[playerid][WantedGrund],
    Spieler[playerid][Muted],
    Spieler[playerid][MuteTime],
    Spieler[playerid][Level],
    Spieler[playerid][Spielzeit],
    Spieler[playerid][Email],
    Spieler[playerid][p_id]);
    mysql_format(handle, query, sizeof(query), "UPDATE users SET jailtime = '%d', jailed = '%d', jailtype = '%d', lottozahl = '%d', klasse = '%d', morde = '%d', tode = '%d', verbrechen = '%d', kh = '%d', ap = '%d', premium = '%d', donator = '%d', contractgeld = '%d' WHERE id = '%d'",
    Spieler[playerid][JailTime],
    Spieler[playerid][Jailed],
    Spieler[playerid][JailType],
    Spieler[playerid][LottoZahl],
    Spieler[playerid][Klasse],
    Spieler[playerid][Morde],
    Spieler[playerid][Tode],
    Spieler[playerid][Verbrechen],
    Spieler[playerid][KH],
    Spieler[playerid][AP],
    Spieler[playerid][Premium],
    Spieler[playerid][Donator],
    Spieler[playerid][ContractGeld],
    Spieler[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;


    }


    Was Log rausgibt, wenn ich mich auslogge:



    [04:06:40] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
    [04:06:42] [DEBUG] mysql_format - connection: 1, len: 500, format: "UPDATE users SET registriert = '%d', skin = '%d', money = '%d', adminlevel = '%d', fraktion = '%d', spawnchange = '%d', rang = '..."
    [04:06:42] [DEBUG] mysql_format - connection: 1, len: 500, format: "UPDATE users SET jailtime = '%d', jailed = '%d', jailtype = '%d', lottozahl = '%d', klasse = '%d', morde = '%d', tode = '%d', ve..."
    [04:06:42] [DEBUG] mysql_pquery - connection: 1, query: "UPDATE users SET jailtime = '0', jailed = '0', jailtype = '0', l", callback: "(null)", format: "(null)"
    [04:06:42] [DEBUG] CMySQLQuery::Execute[] - starting query execution
    [04:06:42] [DEBUG] CMySQLQuery::Execute[] - query was successfully executed within 13.210 milliseconds
    [04:06:42] [DEBUG] CMySQLQuery::Execute[] - no callback specified, skipping result saving






    //Edit:


    Hier mal meine Tabelle:




    Gruß und Danke im Voraus :)

    Mit freundlichen Grüßen,


    Keslo

    Einmal editiert, zuletzt von Keslo ()

  • Du musst ja auch 2x mysql_pquery ausführen. Hast ja auch schließlich 2 separate Querys zum aktualisieren. Vor dem 2 mysql_format (Zeile 21) solltest du mysql_pquery für das 1 SQL Kommando ausführen.


    Dich hält aber auch keiner davon ab, das alles in 1 Query zu schreiben.

  • Du musst ja auch 2x mysql_pquery ausführen. Hast ja auch schließlich 2 separate Querys zum aktualisieren. Vor dem 2 mysql_format (Zeile 21) solltest du mysql_pquery für das 1 SQL Kommando ausführen.

    Jetzt funktioniert alles! Danke dir, war schon am verzweifeln.




    Dich hält aber auch keiner davon ab, das alles in 1 Query zu schreiben.

    Ja ich musste 2 Querys machen, da bei nur einer Query die Line zu lang wäre. Habe dort schon überall probiert sie zu kürzen bzw. zu schneiden, leider erfolgslos, deswegen so.
    Danke dir :)

    Mit freundlichen Grüßen,


    Keslo

  • Habe dort schon überall probiert sie zu kürzen bzw. zu schneiden, leider erfolgslos, deswegen so.

    Du kannst zwei Strings so miteinander verbinden, dann hast du nur ein Query, was performanter ist:
    stock SaveUserStats(playerid)
    {
    if(!Spieler[playerid][Eingeloggt]) return 1;
    new query[700];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET registriert = '%d', skin = '%d', money = '%d', adminlevel = '%d', fraktion = '%d', spawnchange = '%d', rang = '%d', wanteds = '%d', wantedgrund = '%e', muted = '%d', mutetime = '%d', level = '%d', spielzeit = '%d', email = '%e',",
    Spieler[playerid][Registriert],
    Spieler[playerid][Skin],
    Spieler[playerid][Money],
    Spieler[playerid][Adminlevel],
    Spieler[playerid][Fraktion],
    Spieler[playerid][Spawnchange],
    Spieler[playerid][Rang],
    Spieler[playerid][Wanteds],
    Spieler[playerid][WantedGrund],
    Spieler[playerid][Muted],
    Spieler[playerid][MuteTime],
    Spieler[playerid][Level],
    Spieler[playerid][Spielzeit],
    Spieler[playerid][Email]);
    mysql_format(handle, query, sizeof(query), "%s jailtime = '%d', jailed = '%d', jailtype = '%d', lottozahl = '%d', klasse = '%d', morde = '%d', tode = '%d', verbrechen = '%d', kh = '%d', ap = '%d', premium = '%d', donator = '%d', contractgeld = '%d' WHERE id = '%d'",
    query,
    Spieler[playerid][JailTime],
    Spieler[playerid][Jailed],
    Spieler[playerid][JailType],
    Spieler[playerid][LottoZahl],
    Spieler[playerid][Klasse],
    Spieler[playerid][Morde],
    Spieler[playerid][Tode],
    Spieler[playerid][Verbrechen],
    Spieler[playerid][KH],
    Spieler[playerid][AP],
    Spieler[playerid][Premium],
    Spieler[playerid][Donator],
    Spieler[playerid][ContractGeld],
    Spieler[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;
    }