• Guten Tag meine Mitmenschen,
    da ich grad so ein Bedürfniss habe ein Tutorial zu schreiben hab mich jetzt entschlossen ein ausführliches Mysql Tutorial zu schreiben. Hier werde ich in die folgenden Funktionen eingehen:

    Lua
    dbConnect
    dbQuery
    dbPoll
    dbFree
    dbExec

    aber werd auch so einige Sachen mit dem Mysql Modul und den internen MTA DB Funktionen ansprechen.

    So fangen wir an: MTA erlaubt es uns mit einer Datenbank zu arbeiten, was ziemlich praktisch ist. Doch warum ist es praktisch? Die Antwort ist einfach: Durch eine Datenbank kann man Sachen abspeichern und darauf wieder zugreifen, was vieles vereinfacht. Meiner Meinung nach lohnt sich die Datenbank für spezifische Spielerdaten abzuspeichern. Falls ihr nur einzelne Daten abspeichern wollt, dann würde ich auf XML zugreifen, da es nicht gerade sinnvoll ist extra nur für eine Sache, eine Datenbankverbindung aufzubauen um nur einen Query auszuführen. Da ich gerade schon das Wort Query angesprochen habe werde ich es nun erklären was genau eigentlich ein Query ist:

    Das Wort Query ist Englisch und bedeutet "Abfrage". Wir führen also einen Query aus, wenn wir was aus der abfragen möchten, wie zum Beispiel einen String oder einen Wert. Nun werde ich einen kleines Beispiel machen, aber um dies zu machen werd ich euch erstmal etwas zu dbConnect sagen.

    Wie schon das Wort dbConnect sagt, wenn man sie in zwei hälften trennt: db = datenbank, connect = Verbindung. Also heisst es nichts anderes als auf Deutsch Datenbank-Verbindung, also kann man dann daraus schliessen, dass diese Funktion eine Verbindung zu einer beliebigen Datenbank herstellt. Sehen wir uns jetzt einmal die Argumente für dbConnect an.

    Lua
    dbConnect(string dbtype, string host, string username, string password, string options

    Der dbType auch Databasetype dient zur Auswahl eines Datenbank Typs, dieser kann sqlite oder mysql sein. Und weil das hier ein Mysql TuT ist werden wir auch dementsprechend Mysql nehmen.
    Nun kommt der Host dran. Dieser beinhaltet folgende Daten: Datenbankname,Hostadresse,Port,Unix Socket. Aber für uns ist ersteinmal nur der Datenbankname und die Hostadresse von Bedeutung, da die anderen Sachen wenn wir sie nicht angeben auf Standard gesetzt werden. Also der Datenbankname ist die Datenbank in welche ihr eure Daten speichern wollt und die Hostadresse ist nichts weiter als die Adresse des Hosters wo die Datenbank gehostet wird.

    Der Username wie schon das Wort sagt: Benutzername bedeutet in dem Fall soviel wie, der Benutzername den man braucht um sich in der Datenbank anzumelden. Genauso ist es bei dem Password.

    Da "options" ersteinmal für uns unwichtig ist werden wir nun ersteinmal eine kleine Datenbankverbindung per localhost herstellen. Dazu benötigt ihr am besten das pogramm Xampp und startet den Appache und Mysql Server

    Lua
    handler = dbConnect("mysql","dbname=tutorialdb;host=127.0.0.1","root","")


    Als DbType haben wir mysql angegeben, da dies auch ein TuT zu Mysql ist, als datenbank haben wir unsere imaginäre tutorialdb genommen und als host den localhost, der auch die Adresse:127.0.0.1 besitzt. Als benutzernamen haben wir root angegeben, da dies in dem Falle unser PC ist, der sich mit der Datenbank verbinden will und als Passwort haben wir nichts angegeben, weil wir halt unsere datenbank local hosten.

    Nun haben wir unsere dbConnection in eine Variable namens handler gespeichert. Nun führen wir ersteinmal einen Query aus. Was ein Query ist habe ich ja schon oben erklärt:

    Lua
    sql = dbQuery(handler,"SELECT * FROM tutorialtabelle WHERE ID = 1")

    Als erstes Argument beim dbQuery haben wir nun die Variable handler benutzt in der wir unsere dbConnection gespeichert haben. Nun kommt die Abfrage die da wäre: Selektiere alles von der Tabelle 'tutorialtabelle' wo die ID gleich 1 ist. Anders formuliert soll die Tabelle 'tutorialtabelle' in der spalte ID nach der Zahl 1 durchsuchen. Um nun ein rückgabewert zu kriegen nutzen wir:

    Lua
    dbPoll


    Bitte liest euch diese Funktion sorgfältig in der MTA Wiki durch, da es sonst den Rahmen des Tutorials sprengen wird. So um nun ein Ergebnis rauszukriegen benutzen wir nun dbPoll:

    Lua
    result,num_row = dbPoll(sql,-1)


    Nun haben wir dbPoll in die variablen result und num_row gespeichert. Als erstes Argument haben wir die Variable sql genommen in der, der Query gespeichert wurde und als zweites haben wir den Wert -1 eingegeben was soviel heisst, dass das Skript warten soll bis das Ergebnis geliefert wurde. Doch wieso haben wir nun dbPoll in zwei Variablen gespeichert. Nun wenn ihr die Funktion auf der Wiki Seite gelesen habt müsstet ihr wissen, dass die Funktion mehrere Dinge wiedergibt. Genauso wie zum Beispiel getElementPosition().

    So da wir nun dbPoll benutzt haben um ein Ergebnis zurückgeliefert zu bekommen werden wir nun eine if abfrage machen ob in der Spalte ID schon die zahl existiert.

    Lua
    if num_row == 1 then -- Wenn es existiert
    print("Es existiert")
    else -- Existiert nicht
    print("Es existiert nicht")
    end

    So dies war nun der erste Part von meinem ausführlichen Mysql Tutorial. Im zweiten Part wird es um Inserts und anderen sqlFunktionen und um den Unterschied zwischen Modul und intern gehen.
    Lg wünscht euch euer Iven
    Und lernt schön :)

    Doppelpost von @Doneasty genehmigt

    2 Mal editiert, zuletzt von Ainen (18. September 2014 um 16:50)

  • Dieses Thema enthält 3 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!