Jump to content
  • 0

pomoc MySQL - ukládání pozice


Stellet

Dotaz

Ahoj,

Mám problém s MySQL když se odpojím hodí to ERROR do mysql_log.txt.

[04:53:04] [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 'frakce`='0', `rank`' at line 1

v OnPlayerDisconnect mám: 

uloz_hrace(playerid);

a ve funkci uloz_hrace(playerid):

uloz_hrace(playerid)
{
	if(Player[playerid][prihlasen] == 0) return 1;
	new query[128];
	new Float:x, Float:y, Float:z, Float:a;
	GetPlayerPos(playerid, x, y, z);
	GetPlayerFacingAngle(playerid, a);
	format(query, sizeof(query),
	"UPDATE `user` SET `admin`='%i', `money`='%i', `PosX`='%f', `PosY`='%f', `PosZ='%f', `frakce`='%d', `rank`='%d' WHERE `id`='%d'",
	Player[playerid][Admin],GetPlayerMoney(playerid),x,y,z,Player[playerid][frakce],Player[playerid][rank],Player[playerid][ID]);
	mysql_function_query(dbhandle, query, false, "", "");
	return 1;
}

Nevím proč, ale furt to prostě neukládá pozici.

Link to comment
Share on other sites

24 odpovědí na tuto otázku

Recommended Posts

  • 0

Upravil jsem ten string na 300 a stejně ještě..

[07:22:09] [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 'frakce`='0', `rank`='0' WHERE `id`='1'' at line 1

A pozici to stále neukládá :d, btw toto se vykoná vždy když se jen odhlásím ze serveru.

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Zkus vyprintfovat ten dotaz

 

A jestli máš nějakej mysql log, tak sem hoď posledních 5 řádků

Edited by HighPrint
Link to comment
Share on other sites

  • 0

No, mysql log se vždy vytvořil když byla chyba, ale teď se nevytvoří. print jsem zkusil jestli ukládá v tom uloz_hrace, normálně se to ukázalo, také mám že napíše jestli jsem se připojil na databázi, to taky píše že jsem připojen, ale zjistil jsem že se tam neuloží nic, ani vozidla, domy prostě nic co udělám ve hře.

 

Edit: v server.cfg mám toto: 

plugins mysql_static.so

protože když tam dám mysql.so tak to napíše error do server logu:

----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team

[08:43:20] filterscripts = ""  (string)
[08:43:20] 
[08:43:20] Server Plugins
[08:43:20] --------------
[08:43:20]  Loading plugin: mysql_static.so
[08:43:20]  >> plugin.mysql: R39-4 successfully loaded.
[08:43:20]   Loaded.
[08:43:20]  Loading plugin: mysql.so
[08:43:20]   Failed (libmysqlclient_r.so.16: cannot open shared object file: No such file or directory)
[08:43:20]  Loaded 1 plugins.

[08:43:20] 
[08:43:20] Filterscripts
[08:43:20] ---------------
[08:43:20]   Loaded 0 filterscripts.

[08:43:20] [MySQL] Uspesne jsi se pripojil na MYSQL.
Edited by FeedBoss
Link to comment
Share on other sites

  • 0

Ano funguje, třeba v phpmyadmin nastavím admina a ve hře ho normálně mám po přihlášení.

ale třeba i když dám normálně příkaz na vytvoření domu tak se v tabulce nevytvoří, na localhostu normálně ano.

Edited by FeedBoss
Link to comment
Share on other sites

  • 0

A Načítaš pozície Vôbec toho hráča ?

Ono to jen nezapíše vůbec nic do databáze, jelikož jsem pozici zadal přes databázi a spawnulo mě to na ní, ale prostě to nic do databáze nezapíše...

Link to comment
Share on other sites

  • 0
  • Globální moderátor
UPDATE Customers
SET ContactName='Alfred Schmidt', City='Hamburg'
WHERE CustomerName='Alfreds Futterkiste';

toto je správná syntaxe. Ty používáš ` ` uvozovky i tam co nejsou potřeba. 

za druhé ' ' mají ohraničovat hodnoty, které tam vkládáš, to by mohlo být dobře, ale nejsem si teď jist, jestli v pawn pokaždé neuzavřeš ten string jako takový, pak vložíš hodnotu a pak ho znovu otevřeš. (Jako tomu je v C#, PHP, HTML apod.)

 

EDIT: Aha, teď jsem si všiml že to neukládá jenom pozici...

 

EDIT2: Ještě sem můžeš hodit jak vypadá tabulka v db

Link to comment
Share on other sites

  • 0

Ale ono je divný, že to prostě nejde jen na VPS, normálně na localhostu to jede.

 

Kód teda upraven bez těch uvozovek.

uloz_hrace(playerid)
{
	if(Player[playerid][prihlasen] == 0) return 1;
	new query[300];
	new Float:x, Float:y, Float:z, Float:a;
	GetPlayerPos(playerid, x, y, z);
	GetPlayerFacingAngle(playerid, a);
	format(query, sizeof(query),
	"UPDATE user SET admin='%i', money='%i', PosX='%f', PosY='%f', PosZ='%f', frakce='%d', rank='%d' WHERE id='%d'",
		Player[playerid][Admin],
		GetPlayerMoney(playerid),
		Player[playerid][posx],
		Player[playerid][posy],
		Player[playerid][posz],
		Player[playerid][frakce],
		Player[playerid][rank],
		Player[playerid][ID]);
	mysql_function_query(dbhandle, query, false, "", "");
	return 1;
}
Edited by Sc0t
Link to comment
Share on other sites

  • 0
  • Globální moderátor

aha.. jak jsem editnul, to bude tabulka.. jestli to jde na localhostu. předpokládám, že pokaždé ukládáš do jiné db?

Link to comment
Share on other sites

  • 0

A co plugin neháže nějáké errory buď v server logu nebo mysql logu ? Máš stejnou verzi jak dll tak .so ?


Ještě mě napadlo jak tam máš tu podmínku jestli je přihlašený,neresetuješ ji někde v tom disconnectu dřív než máš tu funkci na uložení?


Jen tak pro informaci,je blbost ukládat si id ... To WHERE id je id tabulky v databazi když už a ne id hráče... já to mám takhle můžeš se zkusit inspirovat

stock SaveUser(playerid)
{
	new Float:PosX,Float:PosY,Float:PosZ;
	GetPlayerPos(playerid,PosX,PosY,PosZ);

	new Query[350];
	format(Query, sizeof(Query), "UPDATE `users` SET `Money` = %d ,`Skin` = %d,`Sp_X` = %0.4f,`Sp_Y` = %0.4f,`Sp_Z` = %0.4f WHERE `Username` = '%s'", ZjistitHraciPenize(playerid),PInfo[playerid][Skin],PosX,PosY,PosZ,Jmeno(playerid)); //Formátujeme Query
	mysql_query(Query); //Odosielame

	return 1;
}
Link to comment
Share on other sites

  • 0
----------
Loaded log file: "server_log.txt".
----------
 
SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team
 
[08:43:20] filterscripts = ""  (string)
[08:43:20] 
[08:43:20] Server Plugins
[08:43:20] --------------
[08:43:20]  Loading plugin: mysql_static.so
[08:43:20]  >> plugin.mysql: R39-4 successfully loaded.
[08:43:20]   Loaded.
[08:43:20]  Loading plugin: mysql.so
[08:43:20]   Failed (libmysqlclient_r.so.16: cannot open shared object file: No such file or directory)
[08:43:20]  Loaded 1 plugins.
 
[08:43:20] 
[08:43:20] Filterscripts
[08:43:20] ---------------
[08:43:20]   Loaded 0 filterscripts.
 
[08:43:20] [MySQL] Uspesne jsi se pripojil na MYSQL.

v server logu to háže error..

Link to comment
Share on other sites

  • 0
  • Globální moderátor

No, hele ale já mám tabulky stejně pojmenované jen databázi a tu jsem přejmenoval.

 

a jen se chci ujistit, že se na tu databázi připojuješ a přejmenoval jsi si ji v připojení.. že? :d

Link to comment
Share on other sites

  • 0
  • Globální moderátor

tak jako, jestli to funguje na localhostu a na VPSku ne, tak bych hledal problém mezi připojením... Můžeš nějak udělat test, zda jsi připojen k databízi? Nebo zkusit udělat jednoduší sql query na jednu položku a tu tam odeslat, zda tu vůbec funguje..

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...