MySQL-sscanf Problem

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 habe ein Problem mit meiner MySQL-Tabelle. Und zwar, sieht die SQL-Tabelle so aus:
    breadfish.de/wcf/attachment/2707/
    Ich habe jetzt versucht, das ganze so auszulesen:

    if(mysql_num_rows() > 0) {
    new line[750];
    if(mysql_fetch_row(line)) {
    new Tempdata[5];
    sscanf(line, "iisssssiss",PlayerInfo[playerid][userID],PlayerStatus[playerid][banned],PlayerStatus[playerid][bannedReason],Tempdata[1],Tempdata[2],Tempdata[3],PlayerInfo[playerid][email],Tempdata[4],PlayerInfo[playerid][last_login_ip],PlayerInfo[playerid][language]);
    PlayerStatus[playerid][getAccount] = 1;
    printf("========================================");
    printf("Spieler %s wurde in der Datenbank gefunden !", plname);
    printf("UserID: %s - DB-ID: %s - Language: %s", PlayerInfo[playerid][userID], Tempdata[0], PlayerInfo[playerid][language]);
    printf("========================================");
    mysql_free_result();
    }
    }

    Leider funktioniert das nicht so, wie ich möchte und zwar, liest er die Daten nur nicht aus. Die MySQL-Row wird angenommen und existiert und auch.
    Kann mir dabei jemand helfen?

  • Hallo, da kommt ein Teil der E-Mail Adresse raus. Exakt die ersten 2 Buchstaben fehlen. Mittlerweile hab ich mal p| am Anfang hinzugefügt und alle i durch d ausgetauscht. Nun wird die ID richtig ausgelesen, bei der Sprache also "language" hapert es aber noch:

    sscanf(line, "p|ddsssssdss",PlayerInfo[playerid][userID],PlayerStatus[playerid][banned],PlayerStatus[playerid][bannedReason],Tempdata[0],Tempdata[1],Tempdata[2],PlayerInfo[playerid][email],Tempdata[3],PlayerInfo[playerid][last_login_ip],PlayerInfo[playerid][language]);

    Der Rest wird, soweit ich das sehen kann, ordentlich ausgelesen.

  • Soviel ich weiss musst du bei sscanf noch angeben wie groß der jeweilige string (wie in der DB angegeben) ist
    z.B.
    sscanf(line, "p|dds[30]s[30]s[30]s[30]s[30]ds[30]s[30]",PlayerInfo[playerid][userID],PlayerStatus[playerid][banned],PlayerStatus[playerid][bannedReason],Tempdata[0],Tempdata[1],Tempdata[2],PlayerInfo[playerid][email],Tempdata[3],PlayerInfo[playerid][last_login_ip],PlayerInfo[playerid][language]);