Mysql Checkaccount geht nicht?

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
  • Hey Com,


    Der Befehl aus dem Tutorial für Mysql geht nicht:



    stock mysql_CheckAccount(playerid)
    {
    new query[118],Namei[MAX_PLAYERS_NAME],count;
    GetPlayerName(playerid,Namei,sizeof(Namei));
    mysql_real_escape_string(Namei,Namei);
    format(query,sizeof(query),"SELECT * FROM 'accounts' WHERE 'Name' = '%s'",Namei);
    mysql_store_result();
    count = mysql_num_rows;
    mysql_free_result();
    mysql_query(query);
    }

    Bei der Query nich t wundern die schiefen hochkommas gehen am iPhone nicht.


    So jetzt kann ich mich aber leider immer neu registrieren und dann sind mehrere male der Account in der Tabelle


    Mfg

  • Nimm einfach meins..



    stock mysql_CheckAccount(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    new string[128], wert;
    format(string, sizeof(string), "SELECT * FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(string);
    mysql_store_result();
    if(mysql_num_rows())
    {
    wert = 1;
    }

    return wert;
    }





    if(mysql_CheckAccount(playerid) == 1) {


    //Wenn der Account existiert
    }

  • Ganz einfach das was du hier auch gemacht hast völliger rotzt ist


    stock mysql_CheckAccount(playerid)
    {
    new query[64],Namei[MAX_PLAYERS_NAME];
    GetPlayerName(playerid,Namei,sizeof(Namei));
    mysql_format(verbindung,query,"SELECT `Passwort` FROM `accounts` WHERE `Name` = '%e'",Namei);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows()){


    }else{


    }
    mysql_free_result();
    }


    ich hoffe mal du weißt für was mysql_store_result(); und mysql_free_result(); da sind mit mysql_store_result(); speicherst du so gesehen daten zwischen, welche du dan über weitere
    funktionen von dem jeweiligen mysqlplugin abrufen kannst und mysql_store_result(); löscht diese zwischen gespeicherten daten.
    warum nur das passwort und nicht dieses * ? Der Stern steht für alles aus der reihe ist das in dem fall notwendig ? Nein ist es nicht du willst nur wissen ob der account
    existiert da reicht ein element raus zu greifen und ist auch die schnellste variante.
    warum hier gleich mysql_num_rows in so eine if abfrage rein packen muss ich da nicht dieses count verwenden? Auch hier ist die Antwort nein ganz einfach da
    mysql_num_rows(); die anzahl an Reihen die du über den sqlbefehl abgesendet hast ausspuckt. Beispiel du hast 3 mal den selben account in der daten bank was spuckt
    mysql_num_rows(); wohl aus ganz einfach 3 und dir reicht ja ein ergebnis daher geht dies auch klar. Du kannst das jedoch auch mit der anzahl begrenzen mit dem schönen LIMIT.
    Daher kannst du dein SQL-Befehl ein bissle tunen


    mysql_format(verbindung,query,"SELECT `Passwort` FROM `accounts` WHERE `Name` = '%e' LIMIT 1",Namei);


    nun wird er dir falls ein Ergebnis oder mehrere Ergenisse vorhanden sind nur eins ausspucken, besser gesagt nur 1 auslesen.


    Ich hoffe mal ich konnte damit ein bissle klarheit schaffen