• Hallo Community,

    da ja doch in letzter Zeit einige Leute wissen wollten wie man Mysql in Verbindung mit LUA benutzt habe ich für Anfänger ein kleines Tut zusammengeschrieben. Ich benutze bewusst die MTA Datenbankfunktionen und nicht das Mysql Modul. Also Viel Spaß beim Durchlesen und lernen ;)

    dbConnect()

    Lua
    local dbtype = "mysql" könnte auch sqlite sein
    handler = dbConnect( dbtype, "dbname=deineDatenbank;host=ipAdresse", "benutzer", "passwort", [variabel optionen])
    
    
    Wichtige Optionen:
    autoreconnect: "autoreconnect=1", eine gedroppte Verbindung wird automatisch wiederhergestellt, bei 0 passiert nichts. Autoreconnect=1 ist standarmäßig
    log: "log=1", es werden logs in der Datenbank Log File gespeichert. Auch hier gilt ist automatisch auf 1 gestellt
    "tag: tag=script" damit werden für das Script Logs in der Datenbank Log File gespeichert

    dbExec()

    Lua
    dbExec(dbConnection in unserem Fall handler, query)
    für den query bei dbExec gilt, es können nur "Updates" oder "Inserts" verwendet werden. dbExec gibt keinerlei Wert zurück, außer ob der Query erfolgreich war.
    Für Werte sollte man am besten ? verwenden. Beispiel:
    Bsp: dbExec(handler,"UPDATE userdata SET `user_id` = ? WHERE `player` = ?

    dbQuery()

    Lua
    local query = dbQuery(handler, query)
    Für dbQuery gilt, es wird ein Wert zurückgegeben welcher nur mittels dbPoll herausgelesen werden kann. Man könnte also z. B. "SELECT * FROM table" oder "UPDATE userdata SET name = name" verwenden. 
    Bsp: local query = dbQuery(handler, "SELECT * FROM userdata WHERE name = ?", name) nun müssen wir den Wert herausbekommen. Dazu verwenden wir dbPoll

    dbPoll()

    Lua
    dbPoll wird zum Herauslesen von dbQuery() verwendet. dbPoll gibt 3 Werte zurück. Result, Rows und Error.
    Bsp: local result, row, errormessage = dbPoll
    if row > 0 then
      for result, row in pairs(result) do
          local test = row["deinspaltenname"]
    end(query)

    dbFree()

    Lua
    dbFree() gibt einfach nur einen dbQuery frei.
    Bsp:  dbFree(query)

    Als kleiner Tipp noch. Man kann bei den MTA Datenbank Funktionen anstellen von Werten ? setzen und diese dann nach einem Beistrich setzen.
    Bsp:

    Lua
    dbExec(handler,"UPDATE userdata SET name = ? WHERE name = ?;",neuername,name)

    Ich hoffe das ich euch damit einen kleinen Einblick und erleichterten Einstieg in den Bereich von LUA in Verbindung mit Mysql geben konnte.

    mfg Jake

    mfg

  • Dieses Thema enthält 4 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!