hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 18:40



Jelenlévő felhasználók

Jelenleg 207 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 207 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Függvény error
HozzászólásElküldve: 2020.06.30. 23:42 
Offline
Lelkes

Csatlakozott: 2019.10.03. 09:41
Hozzászólások: 20
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 3 alkalommal
Sziasztok
"A Sum függvényt akarom alkalmazni egy for ciklussal F0-tól F4-ig.és az értékeket átadni egy tömbnek. De lefutáskor errort logol." Mi lehet a probléma?
  1. new szQuery[2048];
  2.     new len = 0;
  3.     new szData[2];
  4.     szData[0] = id;
  5.     szData[1] = get_user_userid(id);
  6.         //This is the problem
  7.     for(new i=0; i <= 4;i++)
  8.     {
  9.     len += format(szQuery[len], 2048, "SELECT SUM(F%i) as F%i FROM accounts; ",i,i);
  10. }
  11.     SQL_ThreadQuery(g_SqlTuple,"sql_piece_of_skins_thread", szQuery, szData, 2);
  12.  
  13. public sql_piece_of_skins_thread(FailState,Handle:Query,Error[],Errcode,szData[],DataSize)
  14. {
  15.     if(FailState == TQUERY_CONNECT_FAILED)
  16.     {
  17.         set_fail_state("[ *ERROR* ] YOU CANNOT CONNECT TO THE DATABASE!");
  18.         return;
  19.     }
  20.     else if(FailState == TQUERY_QUERY_FAILED)
  21.     {
  22.         set_fail_state("[ *ERROR* ] QUERY PROBLEM.");
  23.         return;
  24.     }
  25.    
  26.     if(Errcode)
  27.     {
  28.         log_amx("[ *ERROR* ] QUERY ERROR ( %s )",Error);
  29.         return;
  30.     }
  31.    
  32.     new id = szData[0];
  33.    
  34.     if (szData[1] != get_user_userid(id))
  35.         return;
  36.    
  37.         for(new i=0;i <= 4;i++)
  38.         {
  39.         DB_skins[i][id] = SQL_ReadResult(Query, i);
  40.         }
  41.     inventory(id);
  42.    
  43. }



Error: L 06/30/2020 - 17:07:21: [MySQL] Invalid column: 1
L 06/30/2020 - 17:07:21: [AMXX] Run time error 10: native error (native "SQL_ReadResult")

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Függvény error
HozzászólásElküldve: 2020.07.01. 00:00 
Offline
Tud valamit
Avatar

Csatlakozott: 2018.01.28. 19:04
Hozzászólások: 135
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 44 alkalommal
  1. for(new i=0; i <= 4;i++)
  2.     {
  3.     len += format(szQuery[len], 2048, "SELECT SUM(F%i) as F%i FROM accounts; ",i,i);
  4. }

Arra tippelek, hogy mivel külön-külön sorokban vannak megadva a stringben, csak az utolsó fog érvényesülni. Valahogy így néz ki a teljes stringed:
  1. "SELECT SUM(F0) as F0 FROM accounts; SELECT SUM(F1) as F1 FROM accounts; SELECT SUM(F2) as F2 FROM accounts;..."
és folytatván...

Mivel csak egy oszlopot olvas be és 0-tól van az oszlop id, a második for loopod 1-nél megakad, mert olyan oszlop nem létezik a lehívásban.
Error: L 06/30/2020 - 17:07:21: [MySQL] Invalid column: 1


Ha tudod, hogy mennyit akarsz lehívni és az nem oly sok, én kerülném a for-t a mysql parancsnál és ezeket próbálnám:
  1. format(szQuery, 2048, "SELECT (SUM(F0) as F0, SUM(F1) as F1, SUM(F2) as F2, SUM(F3) as F3), SUM(F4) as F4) FROM accounts;")

  1. format(szQuery, 2048, "SELECT (SUM(F0), SUM(F1), SUM(F2), SUM(F3), SUM(F4)) as (F0, F1, F2, F3, F4)) FROM accounts;")

Ha működik, én mindenképp a másodikat használnám, sokkalta szebb és átláthatóbb

Nem dolgoztam még "as" keyword-el, de szerintem valamelyik menni fog. A handle maradhat úgy.

Megj.:
  • Amíg nem akarod belemásolni a stringbe saját magát, érdemes formatex-et használni, sokkal gyorsabb.(https://www.amxmodx.org/api/string/formatex)
  • Ha len-el dolgozol egy olyan stringen, amibe külön parancsokban szeretnél írni, ne felejtsd el a format(ex)-ben a max string méretet is a len-el összekötni, mert az is lehet olyan hiba, ami egyszer majd random feltűnik, mert más-más string méretek kerülnek mentésre.
    Ezen esetben:
    1. len += format(szQuery[len], 2048, "SELECT (SUM(F0), SUM(F1), SUM(F2), SUM(F3), SUM(F4)) as (F0, F1, F2, F3, F4)) FROM accounts;")
    2. --->
    3. len += format(szQuery[len], 2048 - len, "SELECT (SUM(F0), SUM(F1), SUM(F2), SUM(F3), SUM(F4)) as (F0, F1, F2, F3, F4)) FROM accounts;")
  • Érdemes olyan parancsoknál, ahol string méretet kell megadni charsmax-ot használni. Azért, mert ha változtatni szeretnél a string méretén, akkor azzal nem kell foglalkoznod. Pl. ez esetben nem kell a 2048-at átírnod.
    Úgyanúgy néz ki mint most, csak a 2048 helyett charsmax(szQuery)-t írsz:
    1. len += format(szQuery[len], charsmax(szQuery) - len, "SELECT (SUM(F0), SUM(F1), SUM(F2), SUM(F3), SUM(F4)) as (F0, F1, F2, F3, F4)) FROM accounts;")
  • Nem érdemes ennek a stringnek 2048-as méretet adni. Én mindig egy párral szoktam többet mint ahány karakter vagy megpróbálom felfelé saccolni. Ennek amíg nem tervezel nagyobb méret növelést, bőven elég 150-es méret.

_________________
[ MasterGaming ]

[ TS3 -- Discord ]
[ FB Oldal -- FB Csoport ]

[ CS1.6 Szerverek ]

Hamarosan

Ők köszönték meg Vieni nek ezt a hozzászólást: saxxo (2020.07.04. 19:27)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 20 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole