Szerző Téma: MySQL fetch row  (Megtekintve 1877 alkalommal)

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Dátum: 2014. Március 28. - 18:00:28 »
0 Show voters
Sziasztok! Most tanulgatom a mysqlt-t és írom át a szerverem arra. Egy problémába ütköztem, nem tölt be rendesen. Konkrétan az a baj, hogy minden integer értéknek 48-as számot ír. Ezzel mit lehet tenni? Szerintem valahol itt lesz a baj.
 
stock LoginPlayer(playerid)
{
new query[128+1];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
    mysql_fetch_field_row(pInfo[playerid][admin], \"admin\");
    mysql_fetch_field_row(pInfo[playerid][ora], \"ora\");
    mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
    mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
    mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
    mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
    mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
    mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
    mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
    mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
    mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
MySQL fetch row
« Válasz #1 Dátum: 2014. Március 28. - 18:23:14 »
0 Show voters
Használj sscanf darabolást.. én is csak azt ismerem..
 

stock LoginPlayer( playerid )
{
        new query[128+1];
        format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
        mysql_query(query);
        mysql_store_result();
        mysql_fetch_row_format(query, \"|\");
        sscanf( query, \"darabolás..\", pInfo[ playerid ]... );
        mysql_free_result( );
        return 1;
}

 
Ha nem tudnád, hogy kéne darabolni akkor tessék egy leírás példával: http://forum.sa-mp.com/showthread.php?t=120356

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Válasz #2 Dátum: 2014. Március 28. - 18:46:03 »
0 Show voters
Csak ezzel nincs egy olyan gond, hogy muszáj mindegyiket kikérjem? Mert a táblámban van egy olyan, hogy password és én azt nem akarom kikérni (nincs is enumom rá). És ha kihagyok egyet, akkor elcsúszik az egész.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL fetch row
« Válasz #3 Dátum: 2014. Március 28. - 19:22:10 »
0 Show voters
Ne
 
SELECT * FROM

 
-ot írj, hanem sorold fel a lekérdezendõ oszlopok nevét. Pl.
 
SELECT admin, ora, stb. ... skin, telefonsz FROM

 
persze csak ha jól értettem, és ez a problémád az utolsó hsz-edben.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Válasz #4 Dátum: 2014. Március 28. - 19:26:36 »
0 Show voters
Enélkül is kéne mûködjön. Egy tutorialt néztem, ahol a mysql_fetch_row sorok így voltak leírva stringnél. Na de nekem ezek integer adatok és kérdés, hogy ugyanígy kell-e.

MySQL fetch row
« Válasz #5 Dátum: 2014. Március 28. - 22:01:38 »
+1 Show voters
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
 
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));[/quote]
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
 
    stock LoginPlayer(playerid)
    {
            new
      query[128+1],
      data[64];
            format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
            mysql_query(query);
            mysql_store_result();
           
            while(mysql_fetch_row_format( query, \"|\"))
            {
                mysql_fetch_field_row(data, \"admin\");             pInfo[playerid][admin] = strval(data);
                mysql_fetch_field_row(data \"ora\");               pInfo[playerid][ora] = strval(data);
      // Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
                // mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
                // mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
                // mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
                // mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
                // mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
                // mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
                // mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
                // mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
                // mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
            }
    }

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
MySQL fetch row
« Válasz #6 Dátum: 2014. Március 28. - 22:33:53 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1396040498\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47401\" data-ipsquote-contentclass=\"forums_Topic
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
 
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
 
    stock LoginPlayer(playerid)
    {
            new
      query[128+1],
      data[64];
            format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
            mysql_query(query);
            mysql_store_result();
           
            while(mysql_fetch_row_format( query, \"|\"))
            {
                mysql_fetch_field_row(data, \"admin\");             pInfo[playerid][admin] = strval(data);
                mysql_fetch_field_row(data \"ora\");               pInfo[playerid][ora] = strval(data);
      // Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
                // mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
                // mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
                // mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
                // mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
                // mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
                // mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
                // mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
                // mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
                // mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
            }
    }

 

[/quote]
A sscanf felbontás nem jobb? mivel sokkal egyszerûbb a lekérdezése és a betöltése, vagy talán tévedek? :D

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Válasz #7 Dátum: 2014. Március 29. - 08:44:55 »
0 Show voters
Ezer köszönet! Este én is pont erre gondoltam :D . Köszi nagyon szépen Zsolesz!

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Válasz #8 Dátum: 2014. Március 28. - 18:00:28 »
0 Show voters
Sziasztok! Most tanulgatom a mysqlt-t és írom át a szerverem arra. Egy problémába ütköztem, nem tölt be rendesen. Konkrétan az a baj, hogy minden integer értéknek 48-as számot ír. Ezzel mit lehet tenni? Szerintem valahol itt lesz a baj.
 
stock LoginPlayer(playerid)
{
new query[128+1];
format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format( query, \"|\"))
{
    mysql_fetch_field_row(pInfo[playerid][admin], \"admin\");
    mysql_fetch_field_row(pInfo[playerid][ora], \"ora\");
    mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
    mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
    mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
    mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
    mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
    mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
    mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
    mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
    mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
}
}

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
MySQL fetch row
« Válasz #9 Dátum: 2014. Március 28. - 18:23:14 »
0 Show voters
Használj sscanf darabolást.. én is csak azt ismerem..
 

stock LoginPlayer( playerid )
{
        new query[128+1];
        format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
        mysql_query(query);
        mysql_store_result();
        mysql_fetch_row_format(query, \"|\");
        sscanf( query, \"darabolás..\", pInfo[ playerid ]... );
        mysql_free_result( );
        return 1;
}

 
Ha nem tudnád, hogy kéne darabolni akkor tessék egy leírás példával: http://forum.sa-mp.com/showthread.php?t=120356

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Válasz #10 Dátum: 2014. Március 28. - 18:46:03 »
0 Show voters
Csak ezzel nincs egy olyan gond, hogy muszáj mindegyiket kikérjem? Mert a táblámban van egy olyan, hogy password és én azt nem akarom kikérni (nincs is enumom rá). És ha kihagyok egyet, akkor elcsúszik az egész.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
MySQL fetch row
« Válasz #11 Dátum: 2014. Március 28. - 19:22:10 »
0 Show voters
Ne
 
SELECT * FROM

 
-ot írj, hanem sorold fel a lekérdezendõ oszlopok nevét. Pl.
 
SELECT admin, ora, stb. ... skin, telefonsz FROM

 
persze csak ha jól értettem, és ez a problémád az utolsó hsz-edben.

Nem elérhető doboka98

  • 1002
    • Profil megtekintése
MySQL fetch row
« Válasz #12 Dátum: 2014. Március 28. - 19:26:36 »
0 Show voters
Enélkül is kéne mûködjön. Egy tutorialt néztem, ahol a mysql_fetch_row sorok így voltak leírva stringnél. Na de nekem ezek integer adatok és kérdés, hogy ugyanígy kell-e.

MySQL fetch row
« Válasz #13 Dátum: 2014. Március 28. - 22:01:38 »
0 Show voters
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
 
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));[/quote]
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
 
    stock LoginPlayer(playerid)
    {
            new
      query[128+1],
      data[64];
            format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
            mysql_query(query);
            mysql_store_result();
           
            while(mysql_fetch_row_format( query, \"|\"))
            {
                mysql_fetch_field_row(data, \"admin\");             pInfo[playerid][admin] = strval(data);
                mysql_fetch_field_row(data \"ora\");               pInfo[playerid][ora] = strval(data);
      // Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
                // mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
                // mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
                // mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
                // mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
                // mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
                // mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
                // mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
                // mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
                // mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
            }
    }

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
MySQL fetch row
« Válasz #14 Dátum: 2014. Március 28. - 22:33:53 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1396040498\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47401\" data-ipsquote-contentclass=\"forums_Topic
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
 
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
 
    stock LoginPlayer(playerid)
    {
            new
      query[128+1],
      data[64];
            format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
            mysql_query(query);
            mysql_store_result();
           
            while(mysql_fetch_row_format( query, \"|\"))
            {
                mysql_fetch_field_row(data, \"admin\");             pInfo[playerid][admin] = strval(data);
                mysql_fetch_field_row(data \"ora\");               pInfo[playerid][ora] = strval(data);
      // Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
                // mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
                // mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
                // mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
                // mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
                // mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
                // mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
                // mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
                // mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
                // mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
            }
    }

 

[/quote]
A sscanf felbontás nem jobb? mivel sokkal egyszerûbb a lekérdezése és a betöltése, vagy talán tévedek? :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal