Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4580 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Taigi noriu pereiti ant R33 mysql versijos ir iškilo tokia bėda.

new Query[ 200 ];
    format(Query,sizeof(Query), "SELECT `vardas` FROM `zaidejai` WHERE `vardas` = '%s'", getPlayerName(playerid));
    mysql_query(Query);
    mysql_store_result();

    if(mysql_num_rows() > 0)
    {
        return loginPlayer(playerid);
    } else {

        registerPlayer(playerid);
    }
    mysql_free_result();
new password[ 31 ], Query[ 200 ];
                mysql_real_escape_string(inputtext, password);
                format(Query,sizeof(Query), "INSERT INTO `zaidejai` (vardas, slaptazodis) VALUES ('%s','%s')", getPlayerName(playerid), password);
                mysql_query(Query);

Kaip turėtų atrodyti šiti du ant R33 versijos?

5750e3f489bb49cb70be654fa180ce89235.png

black-and-white-audience.jpg

Pirmiausia noriu pasveikinti pereinant į R33

 

Antrą, tu supranti kad tavo užklausą "SELECT" labai kvaila?(nebent ji mokymosi tikslais parašyta)

new Query[ 200 ]; //čia aišku niekas nesikeičia
   //mysql format tik dėl to nes patogiau, skaityk po kodu ties *
    /// dėl connection_handler irgi skaityk po kodu ties **
    mysql_format(connection_handler,Query,sizeof(Query), "SELECT `vardas` FROM `zaidejai` WHERE `vardas` = '%e'", getPlayerName(playerid));
    mysql_tquery(connection_handler,Query,"OnParnesusVarda","i",playerid); // Vietoj "OnParnesusVarda" galima vadinti BETKAIP. Tai yra funkcija kurią užklausa iškvies grįžusi. Skaityk po kodu ties ***. "i" yra papildomų parametrų tipas(integer). O playerid ir yra tas papildomas parametras.
} //dėmesio. Šita funkcija baigiasi

forward OnParnesusVarda(playerid);
public OnParnesusVarda(playerid) // BŪTINAI turi būti public. "playerid" galime naudoti dėl to nes prieš tai nurodėm kaip papildomą parametrą
{
   // mysql_store_result(); nebereikalinga.

    if(cache_get_row_count() > 0)
    {
        return loginPlayer(playerid);
    } else {

        registerPlayer(playerid);
    }
    //mysql_free_result(); nebereikalinga
    return 1; // reikalinga
}

*mysql_format funkcija buvo ir senesnėse versijose(bet su klaidom). Ji prideda "%e", kas labai patogu, tai "escap'ina" string. Yra tam skirtos papildomos funkcijos, bet su mysql_format jų nereikia. Kam to reikia? Kad apsisaugoti nuo SQL_Injection (google rasi, sql kalbų terminas).

**Connection handler tai tėra skaičius. Nuo R7 versijos galima jungtis prie KELIŲ duomenų bazių, todėl reikia nurodyti į kurią duomenų bazę siųsi šią užklausą. 

new connection_handler; //aišku pavadink kaip nori


connection_handler = mysql_connect(la la la);
//Ir viskas, gali naudoti connection_handler visur kur jo reikės.

***Kaip žinia Pawn kodas vykdomas ant vieno "thread", tai reiškia kad kodas vykdomas iš eilės. R7+ užklausos vykdomas ant NUOSAVO "thread", dėl to jos yra DAUG greitesnės, nes Pawn NETURI laukti kol sugrįš užklausa. Bet dėl tos paties priežasties, jos turi kviesti kitą funkciją. Aišku turi kviesti "public" tipo funkciją, kadangi "stock" funkcijų pavadinimų nelieka po kompiliavimo, o čia jos kviečiamos pagal pavadinimą. <- šito žinoti nereikia kad galėtum sėkmingai dirbti su R33

 

 

Antrasis kodo gabalas.

new password[ 31 ], Query[ 200 ];
                //mysql_real_escape_string(inputtext, password); //O nemačiau tu ir escapini  bet dėl mysql_format nebereikia
                mysql_format(Query,sizeof(Query), "INSERT INTO `zaidejai` (vardas, slaptazodis) VALUES ('%e','%e')", getPlayerName(playerid), password);
                mysql_tquery(connection_handler,Query,"","");//kadangi nėra nei funkcijos kurią reikia kviesti nei papildomų parametrų, paliekame tuščia. Funkciją aišku reikėtų rašyti jei planuoji naudoti "cache_insert_id()"(mysql_insert_id atitikmuo) ar tiesiog nori patikrinti kaip sekės užklausai su mysql_errno

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4580 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...