MySQL benötige Hilfe [Speichert/Lädt 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
  • Guten Abend liebe Community,


    ich benötige Hilfe.
    Irgendwie speichert er den Spieler nicht und auch beim Landen wirds nix.


    Wenn man sich Registriert auf meinem Server funktioniert das. Nur das Geld etc speichern und laden funktioniert nicht.
    Und da ich noch seehr nur in MySQL bin, hoffe ich, dass ihr da mal drüber schauen könnt.


    Hier der "stock SavePlayer(playerid)"

    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
    {
    if(loggedin[playerid] == true) //Und hier ob er noch eingeloggt ist.
    {
    mysql_SetInt("user", "score", pscore[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "geld", pgeld[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "adminlevel", padminlvl[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "fraktion", pfraktion[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "wanteds", pwanteds[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "bank", pbank[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "autoschein", fuhrerschein[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "kampfstyle", pkampfstyle[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "jobid", jobid[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "arbeitslosengeld", arbeitslosengeld[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "rank", prank[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "neu", neu[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "skin", pskin[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "payday", npayday[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "biz", pbiz[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "tban", timeban[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "casinochips", casinochips[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "prison", knastid[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "prisontime", knastzeit[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "ausweis", ausweis[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "herkunft", herkunft[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "staatsange", staatsan[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "wohnort", wohnort[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "alter", alter[playerid], "Name", SpielerName(playerid));
    mysql_SetString("user", "ausweisgultig", gultigbis[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "knastaufenthalt", kaufenthalt[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "pdtickets", tickets[playerid], "Name", SpielerName(playerid));
    mysql_SetInt("user", "autopunkte", autopunkte[playerid], "Name", SpielerName(playerid));
    }
    }
    return 1;
    }


    Dann habe ich hier den stock: mysql_SetInt/SetString

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


    Hier hab ich dann noch den "stock LoadPlayer(playerid)"

    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    pscore[playerid] = mysql_GetInt("user", "score", "Name", SpielerName(playerid));
    pgeld[playerid] = mysql_GetInt("user", "geld", "Name", SpielerName(playerid));
    padminlvl[playerid] = mysql_GetInt("user", "adminlevel", "Name", SpielerName(playerid));
    pfraktion[playerid] = mysql_GetInt("user", "fraktion", "Name", SpielerName(playerid));
    pwanteds[playerid] = mysql_GetInt("user", "wanteds", "Name", SpielerName(playerid));
    pbank[playerid] = mysql_GetInt("user", "bank", "Name", SpielerName(playerid));
    fuhrerschein[playerid] = mysql_GetInt("user", "autoschein", "Name", SpielerName(playerid));
    pkampfstyle[playerid] = mysql_GetInt("user", "kampfstyle", "Name", SpielerName(playerid));
    jobid[playerid] = mysql_GetInt("user", "jobid", "Name", SpielerName(playerid));
    arbeitslosengeld[playerid] = mysql_GetInt("user", "arbeitslosengeld", "Name", SpielerName(playerid));
    prank[playerid] = mysql_GetInt("user", "rank", "Name", SpielerName(playerid));
    neu[playerid] = mysql_GetInt("user", "neu", "Name", SpielerName(playerid));
    pskin[playerid] = mysql_GetInt("user", "skin", "Name", SpielerName(playerid));
    npayday[playerid] = mysql_GetInt("user", "payday", "Name", SpielerName(playerid));
    pbiz[playerid] = mysql_GetInt("user", "biz", "Name", SpielerName(playerid));
    timeban[playerid] = mysql_GetInt("user", "tban", "Name", SpielerName(playerid));
    casinochips[playerid] = mysql_GetInt("user", "casinochips", "Name", SpielerName(playerid));
    knastid[playerid] = mysql_GetInt("user", "prison", "Name", SpielerName(playerid));
    knastzeit[playerid] = mysql_GetInt("user", "prisontime", "Name", SpielerName(playerid));
    ausweis[playerid] = mysql_GetInt("user", "ausweis", "Name", SpielerName(playerid));
    herkunft[playerid] = mysql_GetInt("user", "herkunft", "Name", SpielerName(playerid));
    staatsan[playerid] = mysql_GetInt("user", "staatsange", "Name", SpielerName(playerid));
    wohnort[playerid] = mysql_GetInt("user", "wohnort", "Name", SpielerName(playerid));
    alter[playerid] = mysql_GetInt("user", "alter", "Name", SpielerName(playerid));
    format(gultigbis[playerid], 60, "%s", mysql_GetString("user", "ausweisgultig", "Name", SpielerName(playerid)));
    kaufenthalt[playerid] = mysql_GetInt("user", "knastaufenthalt", "Name", SpielerName(playerid));
    tickets[playerid] = mysql_GetInt("user", "pdtickets", "Name", SpielerName(playerid));
    autopunkte[playerid] = mysql_GetInt("user", "autopunkte", "Name", SpielerName(playerid));
    }
    return 1;
    }


    Hierzu wieder den Stock mysql_GetInt/GetString:

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



    Laut dem MySQL Log ist das der Errorcode:

    SQL
    [20:21:17] CMySQLHandler::Query(UPDATE `user` SET `pdtickets` = '-1' WHERE `Name` = 'Jack_McClain') - An error has occured. (Error ID: 1054, Unknown column 'Name' in 'where clause')
    [20:21:17] >> mysql_real_escape_string( Connection handle: 1 )
    [20:21:17] CMySQLHandler::EscapeString(user); - Escaped 4 characters to user.
    [20:21:17] >> mysql_real_escape_string( Connection handle: 1 )



    Error: 1054 SQLSTATE: 42S22 (ER_BAD_FIELD_ERROR)
    Message: Unknown column '%s' in '%s'



    Ich weiß nicht, ob euch das noch was bringt, aber bitte:



    Ich hoffe ihr könnt mir schnell weiterhelfen, damit ich mit dem Server wieder online gehen kann.


    Mit freundlichen Grüßen,
    Scripter4.0

    Scripter im Ruhestand.

  • und wie könnte ich es deiner Meinung nach nun machen?
    da ich ja noch so gut wie null Ahnung habe darin


    mysql_GetInt("user", "score", "Name", SpielerName(playerid));


    mysql_GetInt(Table[], Field[], Where[], Is[])


    user ist die Tabelle aus der du was auslesen möchtest oder eintragen willst.
    score ist die Spalte aus der du etwas auslesen willst oder eintragen möchtest.
    Name und SpielerName(playerid) zusammen ist die Bedingung die Clausel, welche erfüllt sein muss um den Datensatz/Eintrag auszulesen oder zu aktualisieren. Diese existiert ja nicht.


    Also SQL Befehl würde das so aussehen als Beispiel:


    SQL
    SELECT `score` FROM `user` WHERE `Name` = 'Jens';


    Zu Deutsch Nehme Spalte `score` von der Tabelle `user` wo der `Name` 'Jens' ist