Server crasht bei Aufruf von 'mysql_fetch_field_row'

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
  • Heyho Breafish,
    ich habe ein kleines Problem, wenn ich diese MySQL funktion aufrufe, schließt sich der Server ohne vorwarnung:
    mysql_fetch_field_row
    Konsole:


    Mit Crashdetect plugin :)
    Meine Software:
    Windows 8.1 Pro (64x)


    Ich hoffe ihr könnt mir helfen.

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

    • Offizieller Beitrag

    Poste mal dein public OnPlayerConnect


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • public OnPlayerConnect(playerid) {
    ResetPlayerWeaponsEx(playerid);
    SetPlayerColor(playerid, COLOR_WHITE);
    GetPlayerName(playerid, Spieler[playerid][pName], MAX_PLAYER_NAME);
    new ip[16], query[128];
    GetPlayerIp(playerid, ip, 16);
    mysql_real_escape_string(ip, ip);
    mysql_real_escape_string(Spieler[playerid][pName], Spieler[playerid][pName]);
    format(query, 128, "INSERT INTO `joinlog` (playername, ip) VALUES ('%s', '%s')", Spieler[playerid][pName], ip);
    mysql_query(query);


    format(query, 128, "SELECT * FROM `bans` WHERE (`playername`='%s' OR `ip`='%s')", Spieler[playerid][pName], ip);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows()!=0) {
    new pnames[MAX_PLAYER_NAME], string[1024], ip2[16], reason[60], admin[MAX_PLAYER_NAME], am[30], timebisentban, timebisentban2[60];
    while(mysql_retrieve_row())
    {
    mysql_fetch_field_row(pnames, "playername");
    mysql_fetch_field_row(admin, "von");
    mysql_fetch_field_row(am, "am");
    mysql_fetch_field_row(ip2, "ip");
    mysql_fetch_field_row(reason, "grund");
    mysql_fetch_field_row(timebisentban2, "time");
    timebisentban=strval(timebisentban2);
    if(timebisentban==0) {
    format(string, 1024, ""COLOR_HEX_RED"Sie wurden am %s Permanent ausgeschlossen!"COLOR_HEX_GREY1"\n\nBenutzername: "COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1"deine damalige IP: "COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1"Deine Jetzige IP:"COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1"Ausfuehrender Admin: "COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1" \
    Grund: "COLOR_HEX_GREEN"%s"COLOR_HEX_GREY1"\n\nBei einem Fehlban melde dich bitte im Forum.", am, pnames, ip2, ip, admin, reason);
    ShowPlayerDialog(playerid, DIALOG_ALLINONE, DIALOG_STYLE_MSGBOX, "Sie sind Gebannt!",string, "", "");
    } else {
    if(timebisentban > gettime()) {
    format(string, 1024, ""COLOR_HEX_RED"Sie sind noch für %d Minuten ausgeschlossen!"COLOR_HEX_GREY1"\n\nBenutzername: "COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1"deine damalige IP: "COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1"Deine Jetzige IP:"COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1"Ausfuehrender Admin: "COLOR_HEX_GREEN"%s\n"COLOR_HEX_GREY1" \
    Grund: "COLOR_HEX_GREEN"%s"COLOR_HEX_GREY1"\n\nBei einem Fehlban melde dich bitte im Forum.", timebisentban/1000-gettime(), pnames, ip2, ip, admin, reason);
    ShowPlayerDialog(playerid, DIALOG_ALLINONE, DIALOG_STYLE_MSGBOX, "Sie sind Gebannt!",string, "", "");
    } else {
    format(string, 128, "DELETE FROM `bans` WHERE (`playername`='%s' OR `ip`='%s')", Spieler[playerid][pName], ip2);
    mysql_query(string);
    }
    }
    KickEx(playerid);
    }
    }
    mysql_free_result();
    return 1;
    }

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

  • Ist schon aktiv:
    [15:10:33] CMySQLHandler::Query(INSERT INTO `joinlog` (playername, ip) VALUES ('xDesertx', '127.0.0.1')) - Successfully executed.
    [15:10:33] >> mysql_query( Connection handle: 1 )
    [15:10:33] CMySQLHandler::Query(SELECT * FROM `bans` WHERE (`playername`='xDesertx' OR `ip`='127.0.0.1')) - Successfully executed.
    [15:10:33] >> mysql_store_result( Connection handle: 1 )
    [15:10:33] CMySQLHandler::StoreResult() - Result was stored.
    [15:10:33] >> mysql_num_rows( Connection handle: 1 )
    [15:10:33] CMySQLHandler::NumRows() - Returned 1 row(s)
    [15:10:33] >> mysql_retrieve_row( Connection handle: 1 )
    [15:10:33] >> mysql_fetch_field_row( Connection handle: 1 )


    //edit:
    Zur Information: auf Linux gehts :/

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx

    Einmal editiert, zuletzt von xDesertx ()

  • Puuh, möglicherweise fehlt dir dann auf deinem Windows System irgendwas (.Net oder MS Visual C++).
    Weder am Code noch am Log ist was falsch (ist ja auch klar, sonst würde es auf Linux auch nicht gehen).


    Hast du es mal auf einem anderen Recher probiert?


    Ansonsten könntest du es mit der manuellen Split-Methode machen, siehe hier:
    MYSQL Lädt falsche werte


    Ist zwar umständlicher, aber vielleicht geht das ja.


    Oder, was natürlich das beste wäre: Upgrade den Code auf MySQL R39-2.