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!
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
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 )