Szerző Téma: Mysql kérdés  (Megtekintve 1322 alkalommal)

Mysql kérdés
« Dátum: 2016. Szeptember 07. - 12:33:39 »
0
Hali elkezdtem tanulgatni a mysql-t és nézegettem kódokat amiben egy ilyen sor volt(nem 1 helyen)
 

local valami = dbQuery(csatlakozas, \"SELECT * FROM users\") -- Ezt tudom
local valamieredmeny = dbPoll(valami, -1) -- ezt nem értem hogy miért kell
-- meg még van egy if
if #valamieredmeny then -- és itt az ifnél miért kell \"#\"(hash-tag) jel
-- dolgog
end

 
A válaszokat köszönöm!
« Utoljára szerkesztve: 2016. Szeptember 07. - 16:22:49 írta baglion02 »

Mysql kérdés
« Válasz #1 Dátum: 2016. Szeptember 07. - 21:04:08 »
+1
Szia.
A dbPoll a queryd \"állapotát ellenőrzi\" (This function checks the progress of a database query.). Az első paraméter ugye a kapcsolatod, a másik a timeout.
3 féle értéket adhat vissza:
nil - ha a visszakapott érték nem áll készen (gondolom ha timeoutol)
false - ha hiba van a queryben,e setleg megszakad a kapcsolat, stb
table - a lekérdezett értékek egy tömbje (pl mint amit írtál példa, az az egész táblát kérdezi le és berakja egy tömbbe).
Forrás: DbPoll
A # jel a táblanév előtt az arra a célra szolgál, hogy visszaadja hány elem van a tömbödbe.
Robika1

Mysql kérdés
« Válasz #2 Dátum: 2016. Szeptember 08. - 13:20:36 »
0
Idézetet írta: baglion02 date=1473244419\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62985\" data-ipsquote-contentclass=\"forums_Topic
Hali elkezdtem tanulgatni a mysql-t és nézegettem kódokat amiben egy ilyen sor volt(nem 1 helyen)
 

Szia.
A dbPoll a queryd \"állapotát ellenőrzi\" (This function checks the progress of a database query.). Az első paraméter ugye a kapcsolatod, a másik a timeout.
3 féle értéket adhat vissza:
nil - ha a visszakapott érték nem áll készen (gondolom ha timeoutol)
false - ha hiba van a queryben,e setleg megszakad a kapcsolat, stb
table - a lekérdezett értékek egy tömbje (pl mint amit írtál példa, az az egész táblát kérdezi le és berakja egy tömbbe).
Forrás: DbPoll
A # jel a táblanév előtt az arra a célra szolgál, hogy visszaadja hány elem van a tömbödbe.
Robika1
 


local valami = dbQuery(csatlakozas, \"SELECT * FROM users\") -- Ezt tudom
local valamieredmeny = dbPoll(valami, -1) -- ezt nem értem hogy miért kell
-- meg még van egy if
if #valamieredmeny then -- és itt az ifnél miért kell \"#\"(hash-tag) jel
-- dolgog
end

 
A válaszokat köszönöm!
 
[/quote]
Szerintem magyarul akarja hallani.
query(eredmény),nums(mennyiség),selected(kiválasztott tábla) = dbPoll(valami(feltétel), -1(lefutás)) = a megadott feltételekkel végig fut a táblán.
a #valamieredmeny -t én nem is használom, nem is tudom minek akarnád. ha kiakarod kérdezni, hogy létezik e, akkor:
 
 if nums > 0 then 
-- valami
end

Mysql kérdés
« Válasz #3 Dátum: 2016. Szeptember 09. - 08:29:06 »
0
értem, öszi szépen a válaszokat! :) és ha a -1 helyére mást nem is lehet írni igaz?

Mysql kérdés
« Válasz #4 Dátum: 2016. Szeptember 09. - 10:14:28 »
0
Idézetet írta: baglion02 date=1473402546\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"62985\" data-ipsquote-contentclass=\"forums_Topic
értem, öszi szépen a válaszokat! :) és ha a -1 helyére mást nem is lehet írni igaz?
 
Lehet, de neked az nem szükséges, sőt, kb senki másnak :D

Nem elérhető Xenius

  • 668
    • Profil megtekintése
Mysql kérdés
« Válasz #5 Dátum: 2016. Október 07. - 21:12:07 »
0
A példa kódot senkinek sem ajánlom amit a legelső hozzászólásban írtál, a -1 dbPoll egészen addig \"befagyasztja\" a szervert ameddig nem kap választ.

Mysql kérdés
« Válasz #6 Dátum: 2016. Október 08. - 22:46:03 »
0
Akkor mit használjunk helyette?

Mysql kérdés
« Válasz #7 Dátum: 2016. Október 09. - 02:35:58 »
0
Szerintem callbackkel a legjobb használni:
 
function aaa()
    dbQuery( myCallback, connection, \"SELECT * FROM table_name\" )
end
function myCallback(qh)
    local result = dbPoll( qh, 0 )   -- Timeout doesn\'t matter here because the result will always be ready
end

 
Forrás: https://wiki.multitheftauto.com/wiki/DbQuery
Ez annyival másabb, hogy a dbQuery elküldi a kérést az SQL-nek majd fut tovább nem vár a válaszra. Amikor a SQL visszaküldi a választ akkor meghívódik a callback function (myCallback) ott dbPoll-al kinyered az eredményt (ahogy az angol szöveg is írja itt nincs értelme a timedout argumentnek (2. argument) hisz már megkaptuk a választ, ezért 0 ra állítjuk hogy azonnal csinálja).
Így nem kell várnia a scriptnek a válaszra (persze ha kell az adat a tovább haladáshoz akkor nyilván meg kell várnia de na :D )
« Utoljára szerkesztve: 2016. Október 09. - 02:38:59 írta dugasz1 »

Nem elérhető id100

  • 903
    • Profil megtekintése
Mysql kérdés
« Válasz #8 Dátum: 2016. Október 12. - 14:37:27 »
0
Ha van egy meghatározott változó amit a kliensnek küldesz át, a kliensen render alatt csinálhatsz egy forgó kört és \"Szinkronizáció...\" felirattal ott tarthatod egész addig amíg a változó \"üres\" vagy nil vagy false vagy amit alapból adtál neki. Ha csak szerver oldalon használod és nem küldesz semmit a kliensnek belőle (pl taglista az kliensnek is megy) akkor teljesen mindegy. a -1 viszont nem ajánlott, bár én nem tapasztaltam fagyást, de Xenius dolgozott rengeteg playernek míg én nem.Szóval valószínűleg nem ír hülyeséget :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal