Mysql Daten laden

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
  • Wie kann ich mit Mysql und Sscanf alle Daten von den Spielern laden? Ich benutze das Plugin von Strickenkid (2.1)
    wäre cool wenn jemand ein Beispiel schreiben könnte.


    enum PlayerData {
    pName[10]
    Level,
    bool:Geschlecht,
    Float:X,
    Float:Y,
    Float:Z,
    };
    new PlayerInfo[MAX_PLAYERS][PlayerData];


    new Load_Query[100];


    mysql_query("SELECT * FROM `accounts` WHERE Name = 'xFreeze' LIMIT 1",1,playerid,handle);


    Beispiel zum auslesen von einem Eintrag
    public OnMysqlQuery(resultid, spareid, MySQL:handle)
    {
    switch (resultid){
    case 1:{
    mysql_store_result(handle);
    strdel(Load_Query,0,100);
    mysql_fetch_row(Load_Query,"|",handle);
    sscanf(Load_Query,"p<|>e<s[10]dlfff>",PlayerInfo[spareid]);
    mysql_free_result(handle);
    }
    }
    return 1;
    }


    Beispiel zum auslesen von mehreren Enträgen
    public OnMysqlQuery(resultid, spareid, MySQL:handle)
    {
    switch (resultid){
    case 1:{
    mysql_store_result(handle);
    new i;
    while(mysql_fetch_row(Load_Query,"|",handle)){
    sscanf(Load_Query,"p<|>e<s[10]dlfff>",PlayerInfo[i]);
    ++i;
    strdel(Load_Query,0,100);
    }
    mysql_free_result(handle);
    }
    }
    return 1;
    }


    Ich geh jedoch trotzdem mal davon aus das es nicht zwingend notwendig ist den string zu leeren bevor er sich den Datensatz zieht. Daher kannst du strdel auch weglassen.
    der specifer p bewirkt das der string gesplittet wird wenn das Zeichen | im string kommt. e steht emulator und in dem code oben hat dies zur folge in was der stringabschnitt konvertiert wird und dank diesem specifer wird das ganze auch direkt zugeordnet solange die reihenfolge in der tabelle auch mit dem des enums übereinstimmt.
    Sollte es sein das zum schluss nur quark raus kommt bei den floats als NaN was Not a Number bedeutet so hast du noch die möglichkeit den specifer e weg zu lassen und die abfolge nach den e in den größer/kleiner Zeichen zu übernehmen. das wäre folgt so p<|>s[10]dlfff. Dies hat jedoch den nachteil das du die jeweiligen Variabeln dahinter schreiben musst
    sscanf(Load_Query,"p<|>s[10]dlfff",PlayerInfo[i][pName],PlayerInfo[i][Level],...);