MySQL Abfrage, ob mehrere Values existieren

  • SQL

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    MySQL Abfrage, ob mehrere Values existieren

    Hey, ganz kurze Frage.
    Ich möchte bei meiner Registrationen doppele Emails und Usernames vermeiden.
    Wie ich eine der beiden Sachen verhindere weiß ich.
    Aber wie überprüfe ich ob eines von beiden oder beide Values schon existieren? Sollte eins der beiden Sachen existieren, sollte man sich nicht registrieren können.
    Probiert:


    PHP-Quellcode

    1. ​ $result = mysql_query("SELECT * FROM users WHERE userName = '".$userName."' AND userEmail = '".$userEmail."';");
    2. if(mysql_num_rows($result) == 0) {
    3. echo '<script language="javascript">';
    4. $RegMessage2 = "Successfully registered!";
    5. echo '</script>';
    6. } else {
    7. echo '<script language="javascript">';
    8. $RegMessage2 = "User does already exist!";
    9. echo '</script>';
    10. }


    Hatte die Idee mit dem AND, aber er registriert sich trotzdem, sobald der Nutzername halt noch nicht vergeben ist, die email aber schon.. Beides sollte aber frei sein.
    Wie muss ich das Script anpassen?

    Danke :)
    Lg


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Nimm ein OR. Sonst hast du nur Teffer wo beide Punkte treffen. Mit or werden die Punkte unabhängig vom anderen getestet.
    WEnn man die Abfrage ausspricht erklärt es sich
    Alle Treffer wo Name = Name und Email = Email
    Alle Treffer wo Name = Name oder Email = Email
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Hi,

    grundsätzlich wurde deine Frage schon von Schamash beantwortet, das löst aber nicht das eigentliche Problem. Ich würde dir empfehlen einen Unique Index über 2 Spalten anzulegen, das heißt username und email dürfen zwar alleine durchaus mehrfach existieren, aber in Kombination zusammen nur ein mal. So können auch doppelte Werte gar nicht mehr in die Tabelle eingetragen werden. Solche Beschränkungen legt man i.d.R. auf Datenbankebene fest und nicht im Code.

    Kurze Frage, macht es Sinn, leere <script>-Tags auszugeben? Das hier meine ich

    PHP-Quellcode

    1. echo '<script language="javascript">';
    2. $RegMessage2 = "Successfully registered!";
    3. echo '</script>';


    Bei der Zeile

    PHP-Quellcode

    1. if(mysql_num_rows($result) == 0) {

    solltest du mit dem typsicheren Vergleichsoperator === prüfen, da das Ergebnis auch false sein kann, wenn das Statement fehlgeschlagen ist (siehe Erklärung).

    Du sparst Performance, indem du nicht gleich den ganzen Datensatz holst (​SELECT * FROM ...) sondern z.B. ​SELECT `id` FROM `table` WHERE `username` = 'whatever' OR `email` = 'whatever' LIMIT 1.

    Aber noch wichtiger ist, lass den Scheiß mit mysql_query weg, das ist veraltet und schon in den aktuellen PHP-Versionen gar nicht mehr unterstützt. Verwende zur Verbindung mit Datenbanken stattdessen PDO, lies hier wie's geht.

    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Link“ ()