MYSQL Query zu lang?

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 ho, Leute.
    Ich arbeite derzeit an einem Achievementsystem und wollte dies dann per MySQL abspeichern lassen.
    Soweit zu gut, aber leider ist dann wohl die Query zu lang, bei ca. 49 Erfolgen.


    Hier der Errorcode:

    C:\Users\Voxa\Desktop\Server\Serverskript\gamemodes\selfmade.pwn(5067) : error 075: input line too long (after substitutions)
    C:\Users\Voxa\Desktop\Server\Serverskript\gamemodes\selfmade.pwn(5068) : error 037: invalid string (possibly non-terminated string)
    C:\Users\Voxa\Desktop\Server\Serverskript\gamemodes\selfmade.pwn(5068) : warning 215: expression has no effect
    C:\Users\Voxa\Desktop\Server\Serverskript\gamemodes\selfmade.pwn(5068) : error 001: expected token: ";", but found "-identifier-"
    C:\Users\Voxa\Desktop\Server\Serverskript\gamemodes\selfmade.pwn(5068) : error 017: undefined symbol "_account_achievement"
    C:\Users\Voxa\Desktop\Server\Serverskript\gamemodes\selfmade.pwn(5068) : fatal error 107: too many error messages on one line


    Query:

    SQL
    stock SaveAchievements(playerid){    new query[512];	format(query, sizeof(query), "UPDATE  "#SQL_TAG"_account_achievement SET ach_test =%d,\		`ach_first_car`=%d,\		`ach_first_car_rent`=%d,\		`ach_first_house`=%d,\		`ach_first_house_rent`=%d \		`ach_first_biz`=%d,\		`ach_first_report`=%d,\		`ach_first_bugtrack`=%d,\		`ach_first_faction`=%d,\		`ach_first_job`=%d,\		`ach_first_bankaccount`=%d,\		`ach_first_payday`=%d,\		`ach_first_levelup`=%d,\		`ach_lic_car`=%d,\		`ach_lic_bike`=%d,\		`ach_lic_boat`=%d,\		`ach_lic_plane`=%d,\		`ach_lic_helicopter`=%d,\		`ach_lic_weapon_1`=%d,\		`ach_lic_weapon_2`=%d,\		`ach_lic_weapon_3`=%d,\		`ach_lic_fishing`=%d,\		`ach_lic_personality`=%d,\		`ach_wanted_10`=%d,\		`ach_wanted_20`=%d,\		`ach_wanted_30`=%d,\		`ach_wanted_40`=%d,\		`ach_wanted_50`=%d,\		`ach_wanted_60`=%d,\		`ach_killed_5`=%d,\		`ach_killed_10`=%d,\		`ach_killed_25`=%d,\		`ach_killed_50`=%d,\		`ach_killed_75`=%d,\		`ach_killed_100`=%d,\		`ach_death_5`=%d,\		`ach_death_10`=%d,\		`ach_death_25`=%d,\		`ach_death_50`=%d,\		`ach_death_75`=%d,\		`ach_death_100`=%d,\		`ach_szenario_finish`=%d,\		`ach_harzer`=%d,\		`ach_richbitch`=%d,\		`ach_moneyboy`=%d, \		`ach_fashionqueen`=%d,\		`ach_jailed`=%d,\		`ach_prisoned`=%d,\		`ach_alcatraz`=%d WHERE Name = '%s'",		Spieler[playerid][pAchievementTest],		Spieler[playerid][pAchievementFirstCar],		Spieler[playerid][pAchievementFirstCarRent],		Spieler[playerid][pAchievementFirstHouse],		Spieler[playerid][pAchievementFirstHouseRent],		Spieler[playerid][pAchievementFirstBiz],		Spieler[playerid][pAchievementFirstReport],		Spieler[playerid][pAchievementFirstBugtrack],		Spieler[playerid][pAchievementFirstFaction],		Spieler[playerid][pAchievementFirstJob],		Spieler[playerid][pAchievementFirstBankaccount],		Spieler[playerid][pAchievementFirstPayday],		Spieler[playerid][pAchievementFirstLevelup],		Spieler[playerid][pAchievementLicCar],		Spieler[playerid][pAchievementLicBike],		Spieler[playerid][pAchievementLicBoat],		Spieler[playerid][pAchievementLicPlane],		Spieler[playerid][pAchievementLicHelicopter],		Spieler[playerid][pAchievementLicWeapon1],		Spieler[playerid][pAchievementLicWeapon2],		Spieler[playerid][pAchievementLicWeapon3],		Spieler[playerid][pAchievementLicFishing],		Spieler[playerid][pAchievementLicPersonality],		Spieler[playerid][pAchievementWanted10],		Spieler[playerid][pAchievementWanted20],		Spieler[playerid][pAchievementWanted30],		Spieler[playerid][pAchievementWanted40],		Spieler[playerid][pAchievementWanted50],		Spieler[playerid][pAchievementWanted60],		Spieler[playerid][pAchievementKilled5],		Spieler[playerid][pAchievementKilled10],		Spieler[playerid][pAchievementKilled25],		Spieler[playerid][pAchievementKilled50],		Spieler[playerid][pAchievementKilled75],		Spieler[playerid][pAchievementKilled100],		Spieler[playerid][pAchievementDeath5],		Spieler[playerid][pAchievementDeath10],		Spieler[playerid][pAchievementDeath25],		Spieler[playerid][pAchievementDeath50],		Spieler[playerid][pAchievementDeath75],		Spieler[playerid][pAchievementDeath100],		Spieler[playerid][pAchievementSzenarioFinish],		Spieler[playerid][pAchievementHarzer],		Spieler[playerid][pAchievementRichBitch],		Spieler[playerid][pAchievementMoneyBoy],		Spieler[playerid][pAchievementFashionqueen],		Spieler[playerid][pAchievementJailed],		Spieler[playerid][pAchievementPrisoned],		Spieler[playerid][pAchievementAlcatraz],		SpielerName(playerid)	);	mysql_function_query(MySqlConnection,query,false,"","");	return 1;}


    Wie kann ich den eine lange Query benutzen? ?(


    Bei dem Fehler:
    undefined symbol "_account_achievement"
    Kann ich das auch nicht verstehen, ist doch nur die Tabelle o.o

  • Och ne, die sind ja richtig.
    Was ist denn mit SQL_TAG? Was steckt dahinter?

  • Dann schreib mal "#SQL_TAG" in dem Format weg, und schreibe dort das so hin:
    server_account_achievement

  • Jetzt kommt das :D

  • Du machst das, was du bisher auch gemacht hast nur das du es in kleineren "Päckchen" und öfters machst.

  • format(query, sizeof(query), "UPDATE...", Achieve...);
    format(query, sizeof(query), "%s... WHERE...", query, Achieve...);


    Du teilst den query einfach und fügst in in das selbe query wieder ein, sind dann eben zwei Zeilen.


    Prinzip verstanden?