Da ich in letzter Zeit häufiger Fragen zu MySQL lese, veröffentliche ich hier mal meine INC Datei mit nützlichen Funktionen, um schneller und einfacher auf eine DB zuzugreifen. Natürlich wird beim Aufruf eines SQL Statements geprüft, ob eine Verbindung zur DB besteht. Falls nicht, wird versucht, sie herzustellen.
Wenn man diese INC in sein Script einbindet, muß man nur noch folgende String setzen:
MYSQL_HOST="";
MYSQL_DB="";
MYSQL_USER="";
MYSQL_PASS="";
Ich denke mal, ich brauche hier nichts zu erklären. Hier nun der Downloadlink und die Befehlsübersicht.
PS.:
In der INC ist noch der PW Hash aus der DUDB.INC drin, da ich ihn brauche und nicht extra die DUDB.INC einbinden wollte.
breadfish.de/wcf/attachment/788/
:: Befehlsübersicht:
- OpenMySQL() - Liefert 0 oder 1 zurück (0 false / 1 true bzw. Zugriff zur DB erfolgreich)
- CloseMySQL() - Liefert 0 oder 1 zurück (0 false / 1 true bzw. Zugriff zur DB erfolgreich)
- QueryMySQL(field[],table[],where[],option[]) - Liefert Anzahl der Zeilen zurück. (WHERE und OPTION sind hierbei optional)
QueryMySQL ist aufgebaut wie ein SELECT Statement von MySQL. Beispiel.: SELECT Feld1, Feld2, Feld8 FROM tabelle WHERE Feld1='89' LIMIT 1
- InsertMySQL(table[],field[]) - Liefert 0 oder 1 zurück (1 = Daten erfolgreich in Tabelle eingefügt)
- UpdateMySQL(table[],set[],where[]) - Liefert 0 oder 1 zurück. (1 = Daten erfolgreich in Tabelle aktualisiert)
- DeleteMySQL(table[],where[]) - Liefert 0 oder 1 zurück. (1 = Daten erfolgreich in Tabelle gelöscht)
- ReadMySQL() - Liefert Zeile zurück, welche mit strtok gesplittet werden muß
Anmerkung: ich habe diese Funktion nur proforma eingebaut - selber nutze ich sie aber nie!
Folgende Befehle funktionieren nur in Verbindung mit QueryMySQL:
- GetMySQLField_Int("Spaltenname") - Liefert einen Integerwert zurück
- GetMySQLField("Spaltenname") - Liefert einen String zurück
- GetMySQLField_Float("Spaltenname") - Liefert einen Floatwert zurück
Hier noch ein kleines Beispiel:
Oben in deinem PAWN Code natürlich folgendes einfügen, sonst klappts net
#include <mysql>
new mysqlresult[1024];
Beispiel für das Auslesen:
new Float:var,var2=0,var3[256];
if (QueryMySQL("*","tabellenname","","")>0)
{
while(samp_mysql_fetch_row(mysqlresult))
{
var=GetMySQLField_Float("Floatfeld");
var2=GetMySQLField_Int("Integerfeld");
var3=GetMySQLField("Stringfeld");
printf("Floatfeld:%f - Integergeld:%d - Stringfeld:%s",var,var2,var3);
}
}
Beispiel für Einfügen von Daten:
new mystr[256];
new Float:health,alter,name[32];
alter=22; name="Candy"; health=100.0000;
format (mystr,sizeof(mystr),"Name='%s', Alter='%d', Gesundheit='%f'",name,alter,health);
if (!InsertMySQL("tabelle",mystr)) {print("Daten konnten nicht eingefügt werden!");}
Beispiel für das Aktualisieren vorhandener Daten:
new mystr[256];
format (mystr,sizeof(mystr),"Alter='%d', Gesundheit='%f'",name,alter,health);
if (!UpdateMySQL("tabelle",mystr,"Name='Candy'")) {print("Daten konnten nicht aktualisiert werden!");}
Löschen von Daten:
if (!DeleteMySQL("Tabelle","Name='Candy'")) {print("Daten konnten nicht gelöscht werden!");}