Szerző Téma: Re:Mysql kiválasztás hiba  (Megtekintve 248 alkalommal)

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Re:Mysql kiválasztás hiba
« Dátum: 2014. április 21. - 12:46:23 »
0 Show voters
Néhány észrevétel: a FROM-ot mysql utasításban csupa nagy betûvel szokás írni. (Ki tudja, még lehet ez is a hiba oka, bár nem hiszem. De azért használd csak nagy betûkkel!) Az enumban a felhasználónév változója integer. Vagyis egész szám. Oda mégis hogy a jó életbe akarsz stringet menteni? Ehhez kapcsolódik a következõ probléma: a felhasználónevet strval függvénnyel mi a fenéért alakítod át számmá? Vagy talán azt a szót, hogy \"Nevem\" számként akarod tárolni? Sok sikert hozzá... Ugyanezek vannak a jelszóval is. És ezzel rá is jöttünk a hiba okára: a feltételben valamilyen szám szerepel, pl. a felhasznalonev = 74749264, pedig te ne ezt szeretnéd. De ez szerepel, mert a forráskódban ezt adtad meg, szóval gyakorlatilag a kód nem hibás, csupán azt csinálja, amit megadtál neki. Ráadásul jelenleg az a változó integer, azaz egész szám típusú, de te a lekérdezésnél stringként, azaz karakterláncként, %s jellel adod meg. De ez tök mindegy, ha egyszer a változó értéke nem a szükséges felhasználónév és nem is a szükséges jelszó. Arról nem is beszélve, hogy a lekérdezés sem megfelelõ, még ha az értékek jók is lennének benne. Aztán ha ezen felül még van probléma, az már a te dolgod, ugyanis én már nem igazán vágom az elavult R6-ot, csak a legújabb R38-at, bocsi. Megírtam neked jól (format helyett trükköztem és egy másik függvényt használtam, remélem, nem nagy baj):
 
      format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
   format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);
   mysql_query(Query);
   mysql_store_result();
   if(mysql_num_rows() != 0)
   {
      SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
   }
   else
   {
      SendClientMessage(playerid, -1, \"Hibás jelszó!\");
   }
}
else
{
   SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();

 
Enum:
 
enum FelhasznaloInfo
{
Felhasznalonev[32], // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32
Jelszo[32] // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32 - amúgy ide már nem kell vesszõ, ha ez a legutolsó \'tagja\' az enumnak.
};
new FInfo[MAX_PLAYERS][FelhasznaloInfo];

 
A karakterláncoo enumos változókba való eltárolása:
 
strins([code=pawn]FInfo[playerid][Felhasznalonev, inputtext, 0)
strins(FInfo[playerid][Jelszo], inputtext, 0);

 
Amúgy lehet, hogy alapból a stringnek üresnek kell lennie, de sztem az egész stringet felülírja a függvény. Nem tudom, nem nagyon használtam.mHa s*@r, még üres alap stringgel is, akkor használj simán formatot!


Huh! Tabletrõl írtam, többet is, mint amennyit akartam. De finish.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Re:Mysql kiválasztás hiba
« Válasz #1 Dátum: 2014. április 21. - 17:04:07 »
0 Show voters
[mod]Témát zártam![/mod]

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Re:Mysql kiválasztás hiba
« Válasz #2 Dátum: 2014. április 21. - 12:46:23 »
0 Show voters
Néhány észrevétel: a FROM-ot mysql utasításban csupa nagy betûvel szokás írni. (Ki tudja, még lehet ez is a hiba oka, bár nem hiszem. De azért használd csak nagy betûkkel!) Az enumban a felhasználónév változója integer. Vagyis egész szám. Oda mégis hogy a jó életbe akarsz stringet menteni? Ehhez kapcsolódik a következõ probléma: a felhasználónevet strval függvénnyel mi a fenéért alakítod át számmá? Vagy talán azt a szót, hogy \"Nevem\" számként akarod tárolni? Sok sikert hozzá... Ugyanezek vannak a jelszóval is. És ezzel rá is jöttünk a hiba okára: a feltételben valamilyen szám szerepel, pl. a felhasznalonev = 74749264, pedig te ne ezt szeretnéd. De ez szerepel, mert a forráskódban ezt adtad meg, szóval gyakorlatilag a kód nem hibás, csupán azt csinálja, amit megadtál neki. Ráadásul jelenleg az a változó integer, azaz egész szám típusú, de te a lekérdezésnél stringként, azaz karakterláncként, %s jellel adod meg. De ez tök mindegy, ha egyszer a változó értéke nem a szükséges felhasználónév és nem is a szükséges jelszó. Arról nem is beszélve, hogy a lekérdezés sem megfelelõ, még ha az értékek jók is lennének benne. Aztán ha ezen felül még van probléma, az már a te dolgod, ugyanis én már nem igazán vágom az elavult R6-ot, csak a legújabb R38-at, bocsi. Megírtam neked jól (format helyett trükköztem és egy másik függvényt használtam, remélem, nem nagy baj):
 
      format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\'\", FInfo[playerid][Felhasznalonev]);
mysql_query(Query);
mysql_store_result();
if(mysql_num_rows() != 0)
{
   format(Query, sizeof(Query), \"SELECT * FROM felhasznalok WHERE felhasznalonev = \'%s\' AND jelszo = \'%s\'\", FInfo[playerid][Felhasznalonev], FInfo[playerid][Jelszo]);
   mysql_query(Query);
   mysql_store_result();
   if(mysql_num_rows() != 0)
   {
      SendClientMessage(playerid, -1, \"Sikeresen bejelentkeztél!\");
   }
   else
   {
      SendClientMessage(playerid, -1, \"Hibás jelszó!\");
   }
}
else
{
   SendClientMessage(playerid, -1, \"Nem létezõ felhasználó!\");
}
mysql_free_result();

 
Enum:
 
enum FelhasznaloInfo
{
Felhasznalonev[32], // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32
Jelszo[32] // Nem tudom, hoy hány karakter lehet nálad, de most lesz 32 - amúgy ide már nem kell vesszõ, ha ez a legutolsó \'tagja\' az enumnak.
};
new FInfo[MAX_PLAYERS][FelhasznaloInfo];

 
A karakterláncoo enumos változókba való eltárolása:
 
strins([code=pawn]FInfo[playerid][Felhasznalonev, inputtext, 0)
strins(FInfo[playerid][Jelszo], inputtext, 0);

 
Amúgy lehet, hogy alapból a stringnek üresnek kell lennie, de sztem az egész stringet felülírja a függvény. Nem tudom, nem nagyon használtam.mHa s*@r, még üres alap stringgel is, akkor használj simán formatot!


Huh! Tabletrõl írtam, többet is, mint amennyit akartam. De finish.

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
Re:Mysql kiválasztás hiba
« Válasz #3 Dátum: 2014. április 21. - 17:04:07 »
0 Show voters
[mod]Témát zártam![/mod]

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal