MySQL

Indította Benceee, 2012. február 05. - 21:01:27

Előző téma - Következő téma

Benceee

Hali.
MySQL-be szeretnék menteni.
 

new Query[100];
format(Query,100,\"SELECT * FROM felh WHERE nev=\'%s\'\",JatekosNeve(playerid));
mysql_query(Query);

 
Eddig megy. De hogyan kell menteni? Chuck Norris leírásában nézem, de nincs leírva. Valaki írna egy komplett példát?

tonyo

#1
nagyban függ a mysql plugintól. Ha azt használod, amire gondolok, akkor a folytatás:
[pawn]
mysql_store_result();
if(mysql_fetch_row(string))
{
// mûveletek a tárolt stringgel...
}[/pawn]
Ha addig akarod lehívni, ameddig ad adatot:
[pawn]
mysql_store_result();
while(mysql_fetch_row(string))
{
// mûveletek a tárolt stringgel...
}[/pawn]
A string a következõképpen néz ki, ha nem állítasz be elválasztó karaktert az elõre definiált helyett:
cella1|cella2|cella3|cella4|cella5|...|cella_sok
Ezt egyszerû split függvénnyel fel lehet darabolni a \"|\" jelek mentén. Splitet találsz itt a fórumon is, ha jó emlékszem.
Lehet függvénnyel is lekérdezgetni, de én elõbb MySQL-eztem PHP-ben, mint Pawn-ban, ezért bennem ez a módszer maradt meg.
Edit: lefelejtettem, hogy a végén szabadítsuk fel a memóriát, miután tároltuk az eredményt egy stringben
[pawn]mysql_free_result();[/pawn]

Benceee

Nekem az kellene, hogy frissítse az adatbázist. Pl. kilépésnél.
http://sampforum.hu/index.php?topic=9285.0\" rel=\"external nofollow\">http://sampforum.hu/index.php?topic=9285.0

tonyo

#3
Áh, értem.
Frissítésnél csak egy UPDATE query-t kell lefuttatnunk, pl.:
[pawn]
new Query[100];
format(Query,100,\"UPDATE felh SET skin=%d WHERE nev=\\\"%s\\\"\",JatekosNeve(playerid),GetPlayerSkin(playerid));
mysql_query(Query);
[/pawn]
Akkor neked lényegében a MYSQL lekérdezésekkel kapcsolatban lenne kérdésed? Ahhoz ezt tudnám ajánlani:
http://www.ektf.hu/~phantom/mysqlmini/\" rel=\"external nofollow\">Link egy MySQL útmutatóhoz.
Ismerõsöket is ide szoktam irányítani, nem rossz oldal. A 4 alap mûvelet megtanulására tökéletes(SELECT, UPDATE, INSERT INTO, DELETE).
Edit: \\\" helyett használható sima aposztróf(\') is, csak arra folyton ASCII kódot adott... A \\ jel ugye azért kell, hogy a fordító lássa, hogy az nem a karakter lánc vége, csupán a szövegbe rakjon egy idézõjelet.

Benceee

Sajnos nem menti le..
 
    GetPlayerPos(playerid, PlayerInfo[playerid][lx],PlayerInfo[playerid][ly],PlayerInfo[playerid][lz]);
new Query[100];
format(Query,100,\"SELECT * FROM felh WHEREnev=\\\"%s\\\"\",JatekosNeve(playerid));
mysql_query(Query);
format(Query,100,\"UPDATE felh SET lx=%f WHERE nev=\\\"%s\\\"\",PlayerInfo[playerid][lx],JatekosNeve(playerid));
mysql_query(Query);
format(Query,100,\"UPDATE felh SET ly=%f WHERE nev=\\\"%s\\\"\",PlayerInfo[playerid][ly],JatekosNeve(playerid));
mysql_query(Query);
format(Query,100,\"UPDATE felh SET lz=%f WHERE nev=\\\"%s\\\"\",PlayerInfo[playerid][lz],JatekosNeve(playerid));
mysql_query(Query);

tonyo

Akkor valami nem helyesen van megadva.
[pawn]mysql_debug(1);[/pawn]
Ezt tedd a script elejére. Ekkor a szerver mappájában lesz egy mysql_log.txt, abban írni fogja hogy mi a hibaüzenet, miután lefut a lekérdezés.

Benceee

#6
mysql_debug(1); ottvan. De ugyan nincs .log file. Talán a plugin nem indul el. Megnézem.
Furcsa.
> MySQL plugin R6-2 successfully loaded.
Asszem megvan..
[21:33:13] CMySQLHandler::Query(SELECT * FROM felh WHEREnev=\"Mester_Bence\") - 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 \'=\"Mester_Bence\"\' at line 1)
Létre kéne talán hozni. :D:D

tonyo

Az sem árt :D De itt a hibaüzenet arra vonatkozik hogy a WHERE és a nev közé kell egy szóköz.

Benceee

Megoldva!
Köszi Anthony. Kaptál pár +t:D:D