MySQL Error: argument type missmatch (Argument 5)

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 versuche gerade mein komplettes Script auf MySQL umzustellen.
    Leider scheitere ich gerade kurz vor Schluss an der Speicherung meines Haus-Systemes.


    stock CreateHaus(Float:x,Float:y,Float:z,preis,besitzer[32],innenraum)
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    //Abfrage anstatt if(fexist
    mysql_SetFloat("haus", "x", x, "Name", haus);
    mysql_SetFloat("haus", "y", y, "Haus Nr.", haus);
    mysql_SetFloat("haus", "z", z, "Haus Nr.", haus);
    mysql_SetInt("haus", "preis", preis, "Haus Nr.", haus);
    mysql_SetString("haus", "besitzer", besitzer, "Haus Nr.", haus);
    mysql_SetInt("haus", "innenraum", innenraum, "Haus Nr.", haus);
    }
    for(new h;h<MAX_HAUS;h++)
    {
    DestroyDynamic3DTextLabel(HouseLabel[h]);
    }
    return 1;
    }
    So einmal bekomme ich bei jedem mysql_Set*** den Error: argument type missmatch (Argument 5)
    und ich wüsste gerne welche Abfrage man dort machen könnte, anstatt wie es bei dini ist mit if(exist .


    lg

  • Denn müsste ich es bei den anderen ja auch so gemacht haben ?(


    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    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(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(To, To);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%s' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    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(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%.1f' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    lg

  • Theoretisch müsste ich doch bei Where2 aus dem %s ein %d machen oder?
    Sobald ich jedoch dies gemacht habe bekomme ich die selben Errors.
    Oder sollte ich lieber den Integer in einen String umwandeln?
    Jedoch wie? :D


    lg

  • integer zu string:
    stock valstrex(value, bool:pack=false)
    {
    new string[12];
    valstr(string,value,pack);
    return string;
    }
    dann halt so benutzen:
    mysql_SetFloat("haus", "x", x, "Name", valstrex(haus));

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Danke hat funktioniert. :D
    Meine letzte Frage wäre da noch:
    "Bräuchte ich noch eine if( Abfrage wie es bei dini if!(dini_Exists lautet an der Stelle
    die ich oben erwähnt habe und wie würde die dann heißen"?