Fehler im Business System

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
  • Hey Community!
    Ich habe ein Problem im Biz System.
    Sobald ich das Business erstelle bekomme ich folgenden Mysql_log.

    Code
    [21:53:40] [ERROR] CMySQLQuery::Execute[CreateBiz] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'by, bz, ib_x, ib_y, ib_z, b_interior,b_level,b_preis,b_kasse) VALUES ('2004.4512' at line 1


    So geprintet habe ich das auch das kam raus, ich sehe keine Fehler in diesem Code:

    Code
    [21:53:40] X: 2004.451293
    [21:53:40] Y: -1722.136474
    [21:53:40] Z: 13.382812
    [21:53:40] Level: 100
    [21:53:40] Preis: 100
    [21:53:40] Kasse: 100
    [21:53:40] Business erstellt.
    [21:53:40] INSERT INTO biz (bx, by, bz, ib_x, ib_y, ib_z, b_interior,b_level,b_preis,b_kasse) VALUES ('2004.451293','-1722.136474','13.382812','0.0','0.0','0.0','0','100','100','100')


    ocmd:createbiz(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pAdmin] <6)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen Befehl zu nutzen!");
    new klevel,kpreis,bkasse;
    if(sscanf(params,"iii",klevel,kpreis,bkasse))return SCM(playerid,COLOR_GRAU,"INFO: /createhouse [kauflevel] [kaufpreis] [b_kasse]");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);


    new query[350];
    new id = GetFreeBizID();
    bsInfo[id][bx] = x;
    printf("X: %f",x);
    bsInfo[id][by] = y;
    printf("Y: %f",y);
    bsInfo[id][bz] = z;
    printf("Z: %f",z);
    bsInfo[id][ib_x] = 0.0;
    bsInfo[id][ib_y] = 0.0;
    bsInfo[id][ib_z] = 0.0;
    bsInfo[id][b_interior] = 0;
    bsInfo[id][b_level] = klevel;
    printf("Level: %i",klevel);
    bsInfo[id][b_preis] = kpreis;
    printf("Preis: %i",kpreis);
    bsInfo[id][b_kasse] = bkasse;
    printf("Kasse: %i",bkasse);
    printf("Business erstellt.");
    strmid(bsInfo[id][b_besitzer], "",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    strmid(bsInfo[id][b_cobesitzer], "",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    format(query,350,"INSERT INTO biz (bx, by, bz, ib_x, ib_y, ib_z, b_interior,b_level,b_preis,b_kasse) VALUES ('%f','%f','%f','0.0','0.0','0.0','0','%i','%i','%i')",
    x,y,z,klevel,kpreis,bkasse);
    print(query);
    mysql_function_query(dbhandle,query,true,"CreateBiz","i",id);
    UpdateBiz(id);
    return 1;
    }

  • Schreibe es mal so:
    format(query,350,"INSERT INTO biz (`bx`, `by`, `bz`, `ib_x`, `ib_y`, `ib_z`, `b_interior`,`b_level`,`b_preis`,`b_kasse`) VALUES ('%f','%f','%f','0.0','0.0','0.0','0','%i','%i','%i')",
    x,y,z,klevel,kpreis,bkasse);


    BY ist in ORDER BY vorhanden, deshalb wird es nicht klappen.

  • Jeffry:
    Jetzt Funktioniert es vielen Dank :)


    //EDIT:
    Habe noch ein Problem mit dem Preis setten.
    Wenn ich das mache speichert er das nicht ab und ich kriege ein mysql_Log


    SaveBiz(id)
    {
    new query[350];
    format(query,350,"UPDATE biz SET b_besitzer='%s',b_inteilhaber='%s',b_kasse='%i',b_cokasse,b_preis='%i',b_level='%i' WHERE id='%i'",
    bsInfo[id][b_besitzer],bsInfo[id][b_cobesitzer],bsInfo[id][b_kasse],bsInfo[id][b_cokasse],
    bsInfo[id][b_preis],bsInfo[id][b_level],bsInfo[id][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    ocmd:setpreis(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pAdmin] <6)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht befugt diesen Befehl zu nutzen!");
    new preis,string[128];
    if(sscanf(params,"i",preis))return SCM(playerid,COLOR_GRAU,"INFO: /setpreis [preis]");
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][db_id])continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
    hInfo[i][h_preis] = preis;
    format(string,128,"Du hast den Kaufpreis des Hauses geändert. Neuer Preis: %i",preis);
    print(string);
    SCM(playerid,COLOR_GELB,string);
    SaveHaus(i);
    UpdateHaus(i);
    break;
    }
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(!bsInfo[i][db_id])continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,bsInfo[i][bx],bsInfo[i][by],bsInfo[i][bz]))continue;
    bsInfo[i][b_preis] = preis;
    format(string,128,"Du hast den Kaufpreis des Businesses geändert. Neuer Preis: %i",preis);
    print(string);
    SCM(playerid,COLOR_GELB,string);
    SaveBiz(i);
    UpdateBiz(i);
    }
    return 1;
    }


    Code
    [20:24:42] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b_preis='0',b_level='100' WHERE id='10'' at line 1

    Einmal editiert, zuletzt von Pascal. ()

  • Hier fehlt bei b_cokasse der Wert.
    format(query,350,"UPDATE biz SET b_besitzer='%s',b_inteilhaber='%s',b_kasse='%i',b_cokasse,b_preis='%i',b_level='%i' WHERE id='%i'",
    Zu
    format(query,350,"UPDATE biz SET b_besitzer='%s',b_inteilhaber='%s',b_kasse='%i',b_cokasse='%i',b_preis='%i',b_level='%i' WHERE id='%i'",