Problem mit Mysql Datenbak

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
  • Hey Jungs undzwar habe ich das Problem das mein Mysql SpeicherungsSystem alles speichert ausser den Autoschein
    wen man die Prüfung gemacht hat wird diese auch als 1 in der Datenbank eingetragen aber wen man off geht wird der wert wieder auf 0 Gesetzt.
    Villeicht weis jemand von euch woran es liegen könnte ?


    Hier mal meine Codes wo es gespeichert wird und wo die Mysql Datenbank vom Script aus erstellt wird.


    SpielerdatenLaden(playerid)
    {
    SpielerInfo[playerid][ID] = cache_get_field_content_int(0, "id");
    cache_get_field_content(0, "password", SpielerInfo[playerid][Password], MysqlVerbindung, 129);
    SpielerInfo[playerid][Money] = cache_get_field_content_int(0, "money");
    SpielerInfo[playerid][Admin] = cache_get_field_content_int(0, "admin");
    SpielerInfo[playerid][Member] = cache_get_field_content_int(0, "member");
    SpielerInfo[playerid][Leader] = cache_get_field_content_int(0, "leader");
    SpielerInfo[playerid][Rank] = cache_get_field_content_int(0, "rank");
    SpielerInfo[playerid][Fraktion] = cache_get_field_content_int(0, "fraktion");
    SpielerInfo[playerid][Skin] = cache_get_field_content_int(0, "skin");
    SpielerInfo[playerid][Level] = cache_get_field_content_int(0, "level");
    SetPlayerScore(playerid,SpielerInfo[playerid][Level]);
    SpielerInfo[playerid][Autoschein] = cache_get_field_content_int(0, "autoschein");
    return 1;
    }


    SpielerdatenUpdate(playerid)
    {
    if(SpielerInfo[playerid][Spielereingeloggt] == false)
    return 0;


    new query[256];
    mysql_format(MysqlVerbindung, query, sizeof(query), "UPDATE `players` SET `money` = '%d',`admin` = '%d',`member` = '%d',`leader` = '%d',`rank` = '%d',`fraktion` = '%d',`skin` = '%d',`level` = '%d' WHERE `id` = '%d' LIMIT 1", SpielerInfo[playerid][Money],SpielerInfo[playerid][Admin],SpielerInfo[playerid][Member],SpielerInfo[playerid][Leader],SpielerInfo[playerid][Rank],SpielerInfo[playerid][Fraktion],SpielerInfo[playerid][Skin],SpielerInfo[playerid][Level],SpielerInfo[playerid][ID]);
    mysql_tquery(MysqlVerbindung, query);
    SpielerInfo[playerid][Level] = GetPlayerScore(playerid);


    new query2[256];
    mysql_format(MysqlVerbindung, query2, sizeof(query2), "UPDATE `players` SET `autoschein`=%d",\
    SpielerInfo[playerid][Autoschein]);
    mysql_tquery(MysqlVerbindung, query2, "", "");
    return 1;
    }



    DatenbankErstellen()
    {
    //HIER OBEN IST ORGINAL !
    mysql_query(MysqlVerbindung, "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar(30), `password` varchar(130) NOT NULL, `admin` int(10), `member` int(10), `leader` int(10), `rank` int(10),`fraktion` int(11),`skin` int(11),`level` int(11),`money` int(10),`autoschein` int(11)\
    NOT NULL default '0')", false);


    return 1;
    }

  • @Azcaq: Da fehlt trotzdem die WHERE Anweisung.


    Schreibe es so:
    SpielerdatenUpdate(playerid)
    {
    if(SpielerInfo[playerid][Spielereingeloggt] == false) return 0;
    SpielerInfo[playerid][Level] = GetPlayerScore(playerid);


    new query[512];
    mysql_format(MysqlVerbindung, query, sizeof(query), "UPDATE `players` SET `money` = '%d',`admin` = '%d',`member` = '%d',`leader` = '%d',`rank` = '%d',`fraktion` = '%d',`skin` = '%d',`level` = '%d',",
    SpielerInfo[playerid][Money],SpielerInfo[playerid][Admin],SpielerInfo[playerid][Member],SpielerInfo[playerid][Leader],SpielerInfo[playerid][Rank],SpielerInfo[playerid][Fraktion],SpielerInfo[playerid][Skin],SpielerInfo[playerid][Level]);


    mysql_format(MysqlVerbindung, query, sizeof(query), "%s`autoschein`='%d' WHERE `id` = '%d' LIMIT 1", query,
    SpielerInfo[playerid][Autoschein],SpielerInfo[playerid][ID]);
    mysql_tquery(MysqlVerbindung, query, "", "");
    return 1;
    }

  • Du musst die Werte in einem Query zwischen zwei (wie die auch immer heissen) ' packen.


    Nein, das wird bei Integers nicht zwingend benötigt. Schadet zwar nicht (wobei es bei Access schadet, aber egal), muss aber bei MySQL nicht zwingend vorhanden sein. Bei strings (%s) jedoch muss es dran sein.

  • <blockquote username="Büttii

    Was ist da jetz anders? 8|


    Versuchs und wenn es geht wird es dir mit Sicherheit auffallen:)
    [quote='Jeffry','index.php?page=Thread&postID=2025685#post2025685']@Azcaq: Da fehlt trotzdem die WHERE Anweisung.


    Schreibe es so:
    SpielerdatenUpdate(playerid)
    {
    if(SpielerInfo[playerid][Spielereingeloggt] == false) return 0;
    SpielerInfo[playerid][Level] = GetPlayerScore(playerid);


    new query[512];
    mysql_format(MysqlVerbindung, query, sizeof(query), "UPDATE `players` SET `money` = '%d',`admin` = '%d',`member` = '%d',`leader` = '%d',`rank` = '%d',`fraktion` = '%d',`skin` = '%d',`level` = '%d',",
    SpielerInfo[playerid][Money],SpielerInfo[playerid][Admin],SpielerInfo[playerid][Member],SpielerInfo[playerid][Leader],SpielerInfo[playerid][Rank],SpielerInfo[playerid][Fraktion],SpielerInfo[playerid][Skin],SpielerInfo[playerid][Level]);


    mysql_format(MysqlVerbindung, query, sizeof(query), "%s`autoschein`='%d' WHERE `id` = '%d' LIMIT 1", query,
    SpielerInfo[playerid][Autoschein],SpielerInfo[playerid][ID]);
    mysql_tquery(MysqlVerbindung, query, "", "");
    return 1;
    }
    Danke an beide die Funktion von @[url='http://forum.sa-mp.de/index.php?page=User&userID=30312']Jeffry:
    Scheint zu funktionieren Danke :love:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Im zweiten Query hat

    SQL
    WHERE `id` = '%d'


    gefehlt.


    Ich habe beide Queries zusammengefügt, das ist besser, da nur eine Anfrage gesendet wird, und die WHERE Anweisung nach unten geholt.


    Danke schonmal dafür eine Frage hätte ich noch undzwar bei diesem Code wo er die Datenbank vom Script aus anlegt:


    DatenbankErstellen()
    {
    //HIER OBEN IST ORGINAL !
    mysql_query(MysqlVerbindung, "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar(30), `password` varchar(130) NOT NULL, `admin` int(10), `member` int(10), `leader` int(10), `rank` int(10),`fraktion` int(11),`skin` int(11),`level` int(11),`money` int(10),`autoschein` int(11)\
    NOT NULL default '0')", false);

    return 1;
    }


    Umso mehr sachen ich dort ja eintrage irgendwann wird es zu lang wie kann man es auch auf 2 oder mehrere Zeilen aufteilen mit der Erstellung der
    Datenbanken ?


    Und ist es so wie ich es gemacht habe Ressourcen Sparend geschrieben ?


    Ps: Verwende die Mysql Version R39



    MFg Büttii

  • Das machste dann einfach so:
    DatenbankErstellen()
    {
    //HIER OBEN IST ORGINAL !
    new query[512];
    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar(30), `password` varchar(130) NOT NULL, `admin` int(10),");
    format(query, sizeof(query), "%s`member` int(10), `leader` int(10), `rank` int(10),`fraktion` int(11),`skin` int(11),`level` int(11),`money` int(10),`autoschein` int(11) NOT NULL default '0')", query);
    mysql_query(MysqlVerbindung, query, false);
    return 1;
    }


    Von den Ressourcen ist es optimal.


  • Ok vielen Dank mein Lieber :) :thumbup: