MySQL Error

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.
    Kriege beim speichern der BIZen ein paar Errors im MySQL-Log.
    format(query, sizeof(query), "UPDATE `bizes` SET Besitzer='%s', Name='%s', Preis=%d, Lock=%d, Interior=%d, Kasse=%d WHERE bID='%d'",
    Biz[i][bizBesitzer],
    Biz[i][bizName],
    Biz[i][bizPreis],
    Biz[i][bizLock],
    Biz[i][bizInterior],
    Biz[i][bizKasse],
    i);


    Code
    [20:38:43] CMySQLHandler::Query(UPDATE `bizes` SET Besitzer='Niemand', Name='Ammunation LS', Preis='100000', Lock='1', Interior='1', Kasse='0' WHERE bID='1') - An error has occured. (Error ID: 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 'Lock='1', Interior='1', Kasse='0' WHERE bID='1'' at line 1)


    Das ist der einzige Fehler.
    Der Rest der Speicherung funktioniert einwandfrei.


    Thx :thumbup::thumbup:


    © by me :D

  • format(query, sizeof(query), "UPDATE `bizes` SET Besitzer='%s', Name='%s', Preis=%d, Lock=%d, Interior=%d, Kasse=%d WHERE bID='%d'", Biz[i][bizBesitzer], Biz[i][bizName], Biz[i][bizPreis], Biz[i][bizLock], Biz[i][bizInterior], Biz[i][bizKasse], i);


    weisst du eigentlich warum man backtricks benutzt ?
    ich geh mal davon aus das du dies nicht weißt und wann man einen wert mit einem einfachen anführungszeichen kennzeichnet beziehungsweise maskiert


    format(query, sizeof(query), "UPDATE `bizes` SET `Besitzer`='%s', `Name`='%s', `Preis`=%d, `Lock`= %d, `Interior`= %d, `Kasse`= %d WHERE `bID` = %d",
    Biz[i][bizBesitzer],
    Biz[i][bizName],
    Biz[i][bizPreis],
    Biz[i][bizLock],
    Biz[i][bizInterior],
    Biz[i][bizKasse],
    i);


    und zwar backtricks verwendet man damit mysql nicht mit den tabellen namen durcheinander kommt da es auch dort Keywords gibt ( Wörter die von MySQL reserviert sind wie
    WHERE, SELECT, UPDATE...). Wo ist den dann hier der Fehler tja das liegt an LOCK damit kann man tabellen sperren.


    Daher benutzt man bei den Spalten oder tabellennamen immer die backtricks. Nun wann benutzt man die einfachen Anführungszeichen ?
    Nun diese benutzt man wenn man string benutzt besser gesagt den platzhalter sonst sind diese nicht nötig ^^. Hier geht es auch wieder darum das MySQL nicht durcheinander
    kommt mit Anweisungen die von dir natürlich nicht gewollt sind. Beispiel: wenn ich auf deinen Server mit dem namen SELECT betretten würde und du benutzt die einfachen Anführungszeichen nicht bei dem Platzhalter (%s) oder was ich noch vergessen habe das diese auch nicht als spaltennamen angesehen werden.