mysql hilfe

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
  • Hi


    ich arbeite an einem Selfmade, welches ich auf mysql schreiben möchte.
    Die Accounts funktionieren auch (fast) ohne fehler.
    Aber das ganze wollte ich auf ein Autosystem übertragen. Resultat:
    Autosystem geht nicht mehr. vorher war es dini und ging Problemlos aber egal.
    Ich konnte den Fehler auf 2 Funktionen eingrenzen. Diese Funktionen habe ich erstellt,
    indem ich eine für Accounts einfach angepasst habe.
    Die Funktionen sind CheckAccount was ich versucht habe zu CheckCar zu machen:
    stock mysql_CheckAccount(playerid)
    {
    new Query[128],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name, Name);
    format(Query, sizeof(Query), "SELECT * FROM accounts WHERE Name = '%s'", Name);
    mysql_query(Query);
    mysql_store_result();
    return mysql_num_rows();
    }
    stock mysql_CheckCar(playerid,i)
    {
    new Query[128], name[32], pname[32];
    GetPlayerName(playerid, name, sizeof(name));
    format(pname, sizeof(pname), "%s%d", name,i);//i ist der Schlüssel.also 1-MAX_CARS. es wird dann also aus Heinz Heinz1
    mysql_real_escape_string(pname, pname);
    format(Query, sizeof(Query), "SELECT * FROM autos WHERE Besitzer = '%s'", pname);
    mysql_query(Query);
    mysql_store_result();
    return mysql_num_rows();
    }


    und dann CreateAccount und CreateCar
    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    format(query, sizeof(query), "INSERT INTO accounts (Name, Passwort) VALUES ('%s', '%s')", Name, pass);
    mysql_query(query);
    return true;
    }
    stock CreateCar(name[], carmodel)
    {
    new query[256];
    mysql_real_escape_string(name,name);// name wird hier schon im format z.b. "Heinz1" weitergegeben.
    format(query, sizeof(query), "INSERT INTO autos (Besitzer, Model) VALUES ('%d', '%s')", name, carmodel);
    mysql_query(query);
    return true;
    }


    ich komme schon seit Tagen nicht weiter und wende mich nun als lezte Hoffnung an euch.


    Mit freundlichen Grüßen

  • Also wirklich ... wenn bei mir SQL Kommandos nicht klappen lass ich mir die als erstes IMMER per print ausgeben.


    format(query, sizeof(query), "INSERT INTO autos (Besitzer, Model) VALUES ('%d', '%s')", name, carmodel);
    Dir fällt dort nix auf ? Ich versuche mal print() format zu spielen.

    Zitat

    INSERT INTO autos (Besitzer, Model) VALUES ('436', 'àú~§$')


    Fehler gefunden ? Gut ;)


    Übrigens ... wieso probiert man die SQL Befehle nicht einfach mal Lokal aus anstatt immer direkt Ingame ? bei phpMyAdmin kann man sich die Tabellen doch anzeigen lassen und sehen,ob dort etwas eingetragen wurde. Auch kann man dort die SQL Befehle ausführen lassen :\.


    Bei mysql_CheckCar seh ich so keinen Fehler :-O.

  • hää?
    also ich kann damit nicht soo viel anfangen.
    und in check car ist leider ein fehler weil /kaufen geht (ausser halt auto in tabelle eintragen)
    wenn ich checkcar weg mache.


    aso also %s und %d sind vertauscht,
    das habe ich schon x-mal getauscht deshalb war das gerade falsch. natürlich weis ich wies eig. sein muss ;)


    //edit es geht!! C: also der fehler war ganz komisch hab paar sachen geändert naja jez gehts. ausser checkcar

    2 Mal editiert, zuletzt von Truuper ()

  • Zitat

    aso also %s und %d sind vertauscht aber es geht immernoch nicht wenn ichs umdrehe
    das habe ich schon x-mal getauscht deshalb war das gerade falsch. natürlich weis ich wies eig. sein muss ;)


    Woher soll es irgendjemand wissen,wenn du es so dann postest ?


    Zitat

    Übrigens ... wieso probiert man die SQL Befehle nicht einfach mal Lokal aus anstatt immer direkt Ingame ? bei phpMyAdmin kann man sich die Tabellen doch anzeigen lassen und sehen,ob dort etwas eingetragen wurde. Auch kann man dort die SQL Befehle ausführen lassen :\.


    Hinzu kommt... keiner weiss wie deine Tabelle autos aussieht. Keiner weiss,was bei mysql_CheckAccount zurückgegeben wird. Ist es 0, 1 oder vllt 4 ?

  • ich bin auch noch neu im Gebiet mysql.
    Also meine Tabelle autos sieht genau so aus wie accounts nur eben mit anderen "Überschriften".
    Ich denke doch, dass genau wie bei CheckAccount 0 wenn es keinen gibt und 1 wenn es einen gibt zurückgegeben wird.


    CheckAccount habe ich aus dem mysql Tutorial

  • Ich wiederhole mich nochmal.

    Übrigens ... wieso probiert man die SQL Befehle nicht einfach mal Lokal aus anstatt immer direkt Ingame ? bei phpMyAdmin kann man sich die Tabellen doch anzeigen lassen und sehen,ob dort etwas eingetragen wurde. Auch kann man dort die SQL Befehle ausführen lassen :\.


    .


    Zum Bild:
    Das sind bestimmt alles keine DEFAULT Values eingetragen ( Du hast ja nur das Bild gezeigt , nicht die komplette Struktur ).
    Daher musst du auch für Farbe1,Farbe2,Nos,Spoilter usw. einen Wert angeben beim einfügen ( INSERT ).Bei id ( falls auto_increment und unique ) reicht ein NULL.