Query wird nicht Ausgeführt

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
  • Moin Moin!
    ich habe in MySQL R40 das Problem, das der Query nicht ausgeführt bzw. das der Public wird Ausgeführt.
    Habe es schon mal Geprint, der Public wird einfach nicht Gestartet.
    Zeige euch mal den Code.



    public OnPlayerConnect(playerid)
    {
    ResetSpielerDatei(playerid);
    if(!sInfo[playerid][sEingeloggt])
    {
    new query[128];
    mysql_format(Handle, query, sizeof(query), "SELECT `id` FROM users WHERE `Spielername` = '%e'", sInfo[playerid][sName]);
    mysql_pquery(Handle, query, "OnUserCheck", "d", playerid);
    print("OnPlayerConnect - Complete");
    }
    return 1;
    }


    Der Print wird mir Angezeigt, aber der Print bei "OnUserCheck" zB nicht.



    public OnUserCheck(playerid)
    {
    print("OnUserCheck - Now");
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    print("dialogid");
    ShowPlayerDialog(playerid, DIALOG_REGISTRATION, DIALOG_STYLE_PASSWORD, "Registration", "Registriere dich", "OK", "Nein");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_EINLOGGEN, DIALOG_STYLE_PASSWORD, "Login", "Log dich ein", "OK", "Nein");
    return 1;
    }
    print("OnUserCheck - End");
    return 1;
    }


    Habe auch noch hier die MySQL Log für euch. :)


    Hoffe einer von euch kann mir Helfen. :)

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Code
    public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
    {
    
    
    	printf("%d ; %s ; %s ; %s", errorid, error, callback, query);
    	return 1;
    }

    Füg das mal in dein Skript hinzu und versuch es nochmal - dann poste mal die Debugnachricht; scheint ein Fehler im Query o.ä. zu sein, genaueres kann man sagen, wenn wir den Fehler haben.

  • @Douq
    Bekomme leider einen Fehler beim Compilen.



    C:\Users\**\Desktop\SA-MP Server\gamemodes\Script.pwn(279) : error 025: function heading differs from prototype



    Fehler 1: public OnQueryError(errorid, error[], callback[], query[], connectionHandle)

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Also wenn du es direkt unter der Formatierung hast, scheint vielleicht die mysql_format() Funktion Probleme zu bereiten, warum auch immer? Probier einfach mal Alternativ die normale format()-Funktion und ersetz den placeholder %e -> %s.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Habe es unter "mysql_format" und unter "mysql_pquery". Bleibt beides Leer. :/


    Also, habe es nun so: "format(query, sizeof(query), "SELECT `id` FROM users WHERE `Spielername` = '%s'", sInfo[playerid][sName]);" aber das soll ja schon unter "mysql_format" laufen. :/


    //e Wenn ich das %e durch %s ersetze klappt alles. Woran liegt dies?


    //e
    Habe nun ein neues Problem. :D Log sagt mir:

    1467 ; Failed to read auto-increment value from storage engine ; OnUserRegister ; INSERT INTO users (`Spielername`, `Passwort`) VALUES ('', 'Test')


    Sprich, er setzt den Namen nicht bzw. kann ihn nicht Lesen,

    Mit freundlichen Grüßen, BlvckAir :thumbup:

    Einmal editiert, zuletzt von BlvckAir ()

  • Beitrag von SLaYz ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Richtig, er kann den Namen nicht auslesen.
    Habe im enum sName[MAX_PLAYER_NAME],
    Und mysql_format(Handle, query, 128, "INSERT INTO users (`Spielername`, `Passwort`) VALUES ('%s', '%s')", sInfo[playerid][sName], inputtext);


    So, kann er so den Namen nicht auslesen?

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Normal müsstest du bei OnPlayerConnet sowas haben:


    GetPlayerName(playerid, cP->cName[playerid], 24);


    Das kannst du in der unter der Zeile "ResetSpielerDatei(playerid);" bei OnPlayerConnect machen:
    GetPlayerName(playerid, sInfo[playerid][sName], 24);


    Dann hat er den Namen in der Variabele

  • Habe ich, aber so: GetPlayerName(playerid, sInfo[playerid][sName], MAX_PLAYER_NAME);


    Jetzt sagt er mir:

    1467 ; Failed to read auto-increment value from storage engine ; OnUserRegister ; INSERT INTO users (`Spielername`, `Passwort`) VALUES ('BlvckAir', 'Test')

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Die Variable für den Spieler Namen evtl nicht gesetzt?

    Genau das meinte ich ja, du setzt ja vermutlich mit der Funktion ResetSpielerDatei(playerid); das Arrays für den Spieler zurück, so ist der Name ja auch leer. Du musst ihn beim Verbinden erst wieder speichern, damit du den Namen benutzen kannst. ^^

  • Habe es so. :D



    stock ResetSpielerDatei(playerid)
    {
    GetPlayerName(playerid, sInfo[playerid][sName], MAX_PLAYER_NAME);
    sInfo[playerid][sID] = 0;
    sInfo[playerid][sEingeloggt] = false;
    sInfo[playerid][sLevel] = 0;
    sInfo[playerid][sBargeld] = 0;
    return 1;
    }

    Mit freundlichen Grüßen, BlvckAir :thumbup:

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