MySQL | Problem mit negativen Zahlen

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
  • Liebes Forum,


    in meinem Script benutze ich folgende Abfrage, um eine Zahl auszulesen.



    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    Nun steht in der Datenbank, dass der Spieler "-101" Dollar hat.


    Der MySQL Log bestätigt, dass alles richtig ist:



    Aber der Betrag In-Game beträgt lediglich -1 und nicht -101.


    Spieler-Geld wird hierdurch geladen:



    bargeld = mysql_GetInt("accounts","Geld","Name",Name);
    GivePlayerMoney(playerid, bargeld);


    Wenn ich die Zahl, die geladen wird printen lasse, komme ich auch auf -1.



    Wer hat da eine Lösung?

  • return strval(sqlint);


    Warum willst du es zu einer Value machen, wenn es überhaupt kein String ist?

  • Deine Lösung spuckt einen Fehler aus.
    Die richtige Lösung wäre:



    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    return strval(Get);
    }

  • Das 1. Argument war falsch. Also das bei strval in den Klammern;)