MySQL Einträge auslesen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo liebe Community,


    da es häufig Fehler bei MySQL gibt, dachte ich Ich mache mal ein Tutorial über das Auslesen.
    Hinweis: Ich mache deshalb Absätze, damit es besser zu lesen ist!


    Damit man überhaupt mit MySQL Datenbanken arbeiten kann, muss man natürlich das Script zu MySQL verbinden lassen, eine Datenbank erstellt haben usw.


    Dafür guckt ihr euch am Besten dieses Tutorial an, wenn ihr das noch nicht gemacht habt bzw. Schwierigkeiten damit habt.: MySQL by Maddin


    Nehmen wir das Beispiel Autohaus:



    //Zu allererst müssen wir natürlich das hier machen


    mysql_query("SELECT * FROM Autohaus"); // hier ist das Beispiel Autohaus (Die Tabelle muss exakt "Autohaus" heißen) - Wir wählen alle Einträge in der Tabelle Autohaus aus
    mysql_store_result(); // Diese Funktion müssen wir benutzen, weil wir sonst später (evtl.) MySQL Errors bekommen


    //nun die Abfrage ob es überhaupt Einträge gibt


    if(!mysql_num_rows()) // hier ist nun die Abfrage ob die Einträge NULL ergeben bzw. ob es KEINE Einträge gibt
    {
    mysql_free_result(); //Muss da bleiben weil -> Siehe mysql_store_result
    return 0;
    }
    //Wenn keine Einträge existieren Returnt es NULL was bedeutet, dass wir keine Else Abfrage brauchen
    //D.h. wir können gleich mit der While-Schleife weiter machen


    new result[50]; // zu dem komme ich gleich !!!


    while(mysql_retrieve_row()) //Mit der while-Schleife machen wir die Funktion "mysql_retrieve_row()" solange bis sie alle Einträge von Autohaus durchhat
    {
    //Möchten wir z.B. einen Eintrag in z.B. ModelID aus dem momentanen Eintrag der Tabelle auswählen MÜSSEN wir entweder
    //mysql_fetch_field
    //oder
    //mysql_fetch_field_row benutzen!
    //andere Funktionen wie z.B. mysql_fetch_int funktionieren in mysql_retrieve_row NICHT!!!


    mysql_fetch_field_row(result,"ModelID");
    //Diese Funktion "kopiert" den Inhalt des Eintrages "ModelID" des momentanen Tabelleneintrags und fügt ihn in die Variable "result" ein


    //Super jetzt haben wir eine Variable mit dem Inhalt des Eintrages.
    //Nun können wir sie in einer z.B. Globalen Variablen speichern, damit man sie im ganzen Script nutzen kann.
    //ModelID ist ein Integer (Ganzzahl (wie 1,2,3,8,1864,14564694, usw...))


    GlobaleVariable = strval(result);
    // Beachtet werden MUSS, dass die Variable "GlobaleVariable" ein Integer sein muss! d.h. new GlobaleVariable;


    // "strval" deswegen, weil die Variable "result" ein Array ist!
    // Wer sich jetzt fragt, "Warum ein Array, warum kein Integer?" wird die Antwort auch gleich bekommen
    // mysql_fetch_field_row(string[], const fieldname[]) <-- der Aufbau der Funktion
    // Wie du siehst MUSS die Variable in die der Eintrag eingefügt werden soll ein Array sein!


    strdel(result,0,sizeof(result));
    // Viele mögen das evtl. für unnötig sehen, aber ich mach es zur Sicherheit doch, falls irgendetwas beim Ersetzen schief läuft.
    //Funktion strdel(string[],start,end) <-- ACHTUNG: Wichtig ist, das du bei dieser Funktion den Start NULL einfügst, wenn der Eintrag des Arrays vollständig gelöscht werden soll!



    //Wollen wir einen Array auslesen müssen wir dasselbe machen


    mysql_fetch_field_row(result,"Nummernschild"); // Nehmen wir hier das Nummernschild als Beispiel
    format(ArrayVariable,sizeof(ArrayVariable),"%s",result);
    // Hier MUSS ArrayVariable ein Array sein! d.h. new ArrayVariable[50]; Der Inhalt wird in die Variable "ArrayVariable" gesichert


    strdel(result,0,sizeof(result)); // "result" wird für den nächsten Gebrauch vorbereitet.


    //Wollen wir einen Float auslesen machen wir wieder dasselbe


    mysql_fetch_field_row(result,"SpawnPosX"); // Eine Spawn-Position wie X
    FloatVariable = floatstr(result); // FloatVariable MUSS als Float deklariert worden sein d.h. new Float:FloatVariable; !
    strdel(result,0,sizeof(result)); // Erklärung unnötig
    }
    mysql_free_result(); // Am Ende natürlich "Free_resulten" ^^ Siehe mysql_store_result()



    Das war es alles in allem.
    Ich hoffe ich konnte euch damit weiter helfen
    Fehler bitte Posten


    Vielen Dank


    MfG NicoAiko