[Mysql] Query zusammensetzung Strcat würde das Laufen ?

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, ich kann dies Leider im moment nicht Testen...
    Doch würde das so Klappen ?



    stock SpielerSpeichern(playerid)
    {
    PlayerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
    new Query[1200], Ort[32], Tabelle[50],Query1[500], Query2[500];
    format(Tabelle,50,"UPDATE `accounts`");
    format(Ort,32,"WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);
    format(Query1, 500, " SET `Nummer` = '%d', SET `Ban` = '%d', SET `BanInfo` = '%s', SET `Geld` = '%d', SET `Level` = '%d', SET `Skin` = '%d', SET `Respekt` = '%d', SET `PayDay` = '%d', SET `Admin` = '%d', SET `Fraktion` = '%d', SET `Leader` = '%d', SET `Rang` = '%d', SET `Auto-Schein` = '%d', SET `Mottorad-Schein` = '%d',",
    PlayerInfo[playerid][pNummer],
    PlayerInfo[playerid][pBan],
    PlayerInfo[playerid][pBanInfo],
    PlayerInfo[playerid][pGeld],
    GetPlayerScore(playerid),
    PlayerInfo[playerid][pSkin],
    PlayerInfo[playerid][pRespekt],
    PlayerInfo[playerid][pPayDay],
    PlayerInfo[playerid][pAdmin],
    PlayerInfo[playerid][pMember],
    PlayerInfo[playerid][pLeader],
    PlayerInfo[playerid][pRank],
    PlayerInfo[playerid][pAutoschein],
    PlayerInfo[playerid][pMotorradschein]
    );
    format(Query2, 500," SET `LKW-Schein` = '%d', SET `Flug-Schein` = '%d', SET `Waffen-Schein` = '%d', SET `Spawn` = '%d', SET `Job` = '%d', SET `Perso` = '%d', SET `haus` = '%d', SET `Premium` = '%d', SET `Coins` = '%d'",
    PlayerInfo[playerid][pLKWSchein],
    PlayerInfo[playerid][pFlugschein],
    PlayerInfo[playerid][pWaffenschein],
    PlayerInfo[playerid][pSpawn],
    PlayerInfo[playerid][pJob],
    PlayerInfo[playerid][pPerso],
    PlayerInfo[playerid][pHaus],
    PlayerInfo[playerid][pPremium],
    PlayerInfo[playerid][pCoins]
    );
    strcat(Query, Tabelle),strcat(Query, Query1), strcat(Query, Query2), strcat(Query, Ort);
    mysql_query(Query);
    return 1;
    }


    Hoffe es ist so lessbar wegen dem Automatischen Zeilenumbruch...

  • Nein, wird nicht klappen, weil dein mySQL-Query einfach falsch ist. Vom strcat sollte es keine Probleme geben.


    UPDATE tablename SET col = value, col2 = value2, col3 = value3
    und NICHT
    UPDATE tablename SET col = value, SET col2 = value2, SET col3 = value3


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • also einfach das SET auser beim ersten weglassen Danke :D


    //edit
    LeijaT also so ?

    stock SpielerSpeichern(playerid)
    {
    PlayerInfo[playerid][pSkin] = GetPlayerSkin(playerid);
    new Query[1200], Ort[32], Tabelle[50],Query1[500], Query2[500];
    format(Tabelle,50,"UPDATE `accounts` SET");
    format(Ort,32,"WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);
    format(Query1, 500, " `Nummer` = '%d',`Ban` = '%d',`BanInfo` = '%s',`Geld` = '%d',`Level` = '%d',`Skin` = '%d',`Respekt` = '%d',`PayDay` = '%d', `Admin` = '%d', `Fraktion` = '%d',`Leader` = '%d', `Rang` = '%d', `Auto-Schein` = '%d', `Mottorad-Schein` = '%d',",
    PlayerInfo[playerid][pNummer],
    PlayerInfo[playerid][pBan],
    PlayerInfo[playerid][pBanInfo],
    PlayerInfo[playerid][pGeld],
    GetPlayerScore(playerid),
    PlayerInfo[playerid][pSkin],
    PlayerInfo[playerid][pRespekt],
    PlayerInfo[playerid][pPayDay],
    PlayerInfo[playerid][pAdmin],
    PlayerInfo[playerid][pMember],
    PlayerInfo[playerid][pLeader],
    PlayerInfo[playerid][pRank],
    PlayerInfo[playerid][pAutoschein],
    PlayerInfo[playerid][pMotorradschein]
    );
    format(Query2, 500," `LKW-Schein` = '%d', `Flug-Schein` = '%d', `Waffen-Schein` = '%d', `Spawn` = '%d', `Job` = '%d', `Perso` = '%d', `haus` = '%d', `Premium` = '%d', `Coins` = '%d'",
    PlayerInfo[playerid][pLKWSchein],
    PlayerInfo[playerid][pFlugschein],
    PlayerInfo[playerid][pWaffenschein],
    PlayerInfo[playerid][pSpawn],
    PlayerInfo[playerid][pJob],
    PlayerInfo[playerid][pPerso],
    PlayerInfo[playerid][pHaus],
    PlayerInfo[playerid][pPremium],
    PlayerInfo[playerid][pCoins]
    );
    strcat(Query, Tabelle),strcat(Query, Query1), strcat(Query, Query2), strcat(Query, Ort);
    mysql_query(Query);
    return 1;
    }

  • Sieht so weit richtig aus. Anbei könnte man noch anmerken, dass du - sofern möglich - immer mit LIMITs in deinen Querys arbeiten solltest. Da vermutlich kein Spielername doppelt möglich ist, wäre in diesem Query ein LIMIT 1 angebracht. So braucht mySQL nicht mehr weitersuchen, wenn schon ein Ergebnis gefunden wurde und erspart mehr oder weniger viel Zeit.


    Bei 30 Usern macht sich das zwar nicht bemerkbar, aber wir reden ja davon es "richtig" zu machen. Wenn du also irgendwann mal 100000 Spieler hast, wirds langsamer ;p


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'