Problem mit MySQL

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
  • Guten Morgen,
    Ich habe folgendes Problem:

    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(853) : error 006: must be assigned to an array
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(854) : error 006: must be assigned to an array
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(855) : error 006: must be assigned to an array
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(856) : error 006: must be assigned to an array
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(887) : error 006: must be assigned to an array
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(888) : error 006: must be assigned to an array


    PHP
    //Problem Zeilen von 853-856
    		sCarInfo[playerid][pCarPos_X] = mysql_GetFloat("autos", "AutoX", "Name", sCarInfo[playerid][sName]);
    		sCarInfo[playerid][pCarPos_Y] = mysql_GetFloat("autos", "AutoY", "Name", sCarInfo[playerid][sName]);
    		sCarInfo[playerid][pCarPos_Z] = mysql_GetFloat("autos", "AutoZ", "Name", sCarInfo[playerid][sName]);
    		sCarInfo[playerid][pCarPos_A] = mysql_GetFloat("autos", "AutoA", "Name", sCarInfo[playerid][sName]);


    PHP
    //Problem Zeilen von 887-888
    		sCarInfo[playerid][CarTank] = mysql_GetFloat("autos", "CarTank", "Name", sCarInfo[playerid][sName]);
    		sCarInfo[playerid][CarKM] = mysql_GetFloat("autos", "CarKM", "Name", sCarInfo[playerid][sName]);


    Der stock geht so:

    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` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    Greetz

  • Das was du gepostet hast ist nicht mysql_getfloat
    Vergleich jedoch mal die datentypen der Parameter der Funktion mit deinen die du nutzt

    Er hat auch die falsche Funktion gepostet.
    Wir brauchen mysql_getFloat() und nicht mysql_setFloat().


    Ja, das sind meine Fehler wenn ich etwas zu schnell bin .. sorry ..

    stock mysql_GetFloat(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 `%f` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }

  • Die Funktion gibt einen Float Wert zurück, daher muss der Funktion selbst auch noch ein Datentyp gegeben werden.

    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])


    so sähe die korrekte Funktionsdefiniton aus.


    Sobald ich dann dies mache, passiert das:

    PHP
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(1027) : warning 208: function with tag result used before definition, forcing reparse


    Das ist die Zeile:

    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])

  • Meist funktioniert das ganze nicht so wie man will , wenn man die Funktion unterhalb der Verwendung hat.


    Beispiel:


    main()
    {
    new playerid;
    mysql_GetFloat("autos", "AutoX", "Name", sCarInfo[playerid][sName]);


    }


    stock Float:mysql_GetFloat(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 `%f` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }


    da kannst du entweder die funktion nach ganz oben verschieben oder du nutzt forward


    forward Float:mysql_GetFloat(Table[], Field[], Where[], Is[]);


    ganz oben

  • und anstatt ein return Get; ein return floatstr(Get); richtig?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • und anstatt ein return Get; ein return floatstr(Get); richtig?


    habe ich jetzt übersehen , aber ja genau
    entweder so:
    stock Float:mysql_GetFloat(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 `%f` WHERE `%s` = '%s' LIMIT 1;", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return floatstr(Get);
    }


    oder du nutzt mysql_fetch_float


    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:value;
    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 `%f` WHERE `%s` = '%s' LIMIT 1;", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(value);
    mysql_free_result();
    return value;
    }

  • Dies kommt beim ersten Code ( mit return floatstr(Get); )


    und wenn man mit deiner 2 Funktion (mit mysql_fetch_float) kommt das:

    PHP
    C:\Users\tobialvarez\Desktop\Home Server\filterscripts\autohaus.pwn(1056) : warning 213: tag mismatch


  • Ok du verwendest das Plugin von strickenkid



    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:value;
    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' LIMIT 1;", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    value = mysql_fetch_float();
    mysql_free_result();
    return value;
    }



    und beim der zweiten wie beim ersten hast du ein fehler bei den Plathaltern gehabt.



    format(query, 128, "SELECT `%s` FROM `%f` WHERE `%s` = '%s' LIMIT 1;", Field, Table, Where, Is);


    %f zu %s da Table ein string ist


    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s' LIMIT 1;", Field, Table, Where, Is);