SerweryWłasny serwerDla twórcówForumFAQDokumentacjaBezpieczeństwo
Pobierz launcher
  1. Dokumentacja
  2. Funkcje serwera
  3. dbPoll

Funkcja

dbPoll

Odbiera wynik zapytania z dbQuery: wiersze, liczbę zmienionych wierszy i ID ostatnio wstawionego. Jeśli chcesz po prostu wykonać zapytanie i dostać wiersze, prościej użyć dbFetch.

Składnia

table dbPoll(element queryHandle [, int timeout = 0])

Argumenty

queryHandleelement
Uchwyt z dbQuery.
timeoutint, opcjonalny = 0
0 - nie czekaj (zwraca nil, gdy wyniku jeszcze nie ma), -1 - czekaj, aż baza odpowie, liczba - czekaj najwyżej tyle milisekund.

Różnice względem MTA:SA

  • Tych argumentów z MTA:SA tu nie ma: bool multipleResults = false

W MTA:SA

dbPoll(db-query queryHandle, int timeout, bool multipleResults = false)

Zwraca

Tablica wierszy (każdy wiersz to tablica kolumna = wartość), liczba zmienionych wierszy i ID wstawionego. Te same dwie liczby są też w samej tablicy: rows.affectedRows i rows.insertId. nil, gdy wynik jeszcze nie jest gotowy, false z kodem i opisem błędu, gdy zapytanie się nie udało.

Przykład

dbQuery(function(q)
    local rows, err, msg = dbPoll(q, 0)
    if not rows then
        print("Błąd bazy: " .. tostring(msg))
        return
    end
    for _, row in ipairs(rows) do
        print(row.serial, row.kasa)
    end
end, db, "SELECT serial, kasa FROM gracze ORDER BY kasa DESC LIMIT 10")

Uwagi

Czekanie w async nie zatrzymuje serwera. Wewnątrz async(function() ... end) czekanie dbPoll(q, -1) wstrzymuje tylko to zadanie, a gra i inne skrypty działają dalej. Poza zadaniem serwer stoi, dopóki baza nie odpowie, a przy dłuższym czekaniu dostaniesz ostrzeżenie w konsoli.

Wynik możesz odczytać kilka razy. Kolejne dbPoll na tym samym uchwycie zwraca ten sam wynik, nie trzeba też wołać dbFree po odczycie. Wartość NULL z bazy przychodzi jako false.

Zobacz też