MySQL Fehler trotz if überprüfung

Hallo ,
ich arbeite zur Zeit an einem Registrieungs-script .
Leider hab ich ein Problem mit MySQL , da ich obwohl ich mit einer if-abfrage geprüft habe ob es schon einen Eintrag in der DB vorhanden ist , wird bei einem doppeleintrag bei der DB nur ein MySQL Fehler ausgegebn und NICHT meine if-abfrage .
Hier der relevante Teil des Scriptes.
PHP:
 $querymail = "SELECT
                           EMail
                     FROM 
                           users
                     Where 
                           Email == 'mysql_escape_string($email)'";
                                      
         $resultmail = mysql_query($querymail);
         if (mysql_num_rows($resultmail) != 0) {echo "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben.";
        
         $queryname = "SELECT 
                             Name
                       From 
                             users
                       Where
                            Name =='mysql_escape_string($user)'";
                            
          $resultname = mysql_query($queryname);
          if (mysql_num_rows$resultname) != 0) {echo ' Der eingegebende Username ('.$user.') ist bereits vorhanden, bitte ändere deine Angaben.';
          }
         }
        }
       }
           else {
           $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')";
           $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); 
               echo  "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>";
               echo  "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>";
               echo  "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>";
               echo  "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>";
       }  
exit();
mysql_close();

Freue mich auf eine schnelle Antwort.
Mit freundlichen Grüßen 0wnZ
 
Wenn du "mysql_escape_string($email)" in einen String schreibst, wird nur $email durch dessen Wert ersetzt, nicht aber die Funktion mysql_escape_string() ausgeführt.

Korrekt wäre es in der Form

$querymail = "SELECT EMail FROM users Where Email = '" . mysql_escape_string($email) ."'";

Vergleiche in MySQL übrigens auch nur mit einfachem Gleichheitszeichen.
 
Also falls Du den Code benutzt den Du da gepostet hast, wäre es kein Wunder wenn es nicht geht! Schau Dir Deinen Code nochmal genau an!
 
ich vermute das das mit dem !=0 in verbindung steht , weil da ein nummerischer wert übergebn wird und diesmal nich 0=false und 1= true is. (oder so ähnlich?)
oda ist es so weil ich mysql_num_rows($querymail) machen müsste denn in dem script is die anfrage vor der überpfrüng gesendet worden (oda seh ich da fehler wo keine sind??)
ich probier ma rum ^^
trotzdem *hilfe annahme stelle 24h am tag geöffnet*

edit: edit gestrichen wegen unerhöhrter dummheit

edit der dritte: die zweite vermutung ist auch für die Tonne !! (sry heut irgendwie nicht mein Tag)


edit zum 4.:
ich krichs nit ich habs ma anders probiert aba irgendwie wird die if abfrage übergangen argh
hier des script

PHP:
     if ($_POST["Name"]== "") { $error = "Bitte gebe einen Benutzernamen ein.";
      if ($_POST["EMail"]=="") { $error = "Bitte gebe deine E-Mail Adresse ein.";
       
$query = @mysql_query("SELECT
                             EMail 
                       FROM 
                             users
                       WHERE
                             EMail = '".$_POST['EMail']."'");
$result = @mysql_fetch_array($query);
if($_POST['EMail'] == $result['EMail']) {echo "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben.";

$query = @mysql_query("SELECT
                             Name
                       FROM 
                             users
                       WHERE
                             Name = '".$_POST['Name']."'");
                             
$result = @mysql_fetch_array($query);
if($_POST['Name'] == $result['Name']) { echo "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte ändere deine Angaben.";
          }
         }
        }
       }
           else {
           $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')";
           $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); 
               echo  "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>";
               echo  "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>";
               echo  "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>";
               echo  "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>";
       }  
exit();
mysql_close();
 
Deine Klammerei ist ein heilloses Durcheinander. Geh's doch ganz einfach an:

PHP:
<?php

// DB-Verbindungskram

if ( empty ( $_POST [ 'email' ] ) ) $error = 'E-Mail eingeben';
if ( empty ( $_POST [ 'user'  ] ) ) $error = 'Username eingeben';

if ( empty ( $error ) )
{
    $blubb = mysql_query ( 'SELECT name, email FROM users
                            WHERE  name="' . $_POST [ 'user'  ] . '" OR
                                  email="' . $_POST [ 'email' ] . '"' );
    if ( $line = mysql_fetch_assoc ( $blubb ) )
    {
        if ( $line [ 'name'  ] == $_POST [ 'user'  ] ) $error = 'Name schon weg';
        if ( $line [ 'email' ] == $_POST [ 'email' ] ) $error = 'Mail schon weg';
    }

    if ( empty ( $error ) )
    {
        mysql_query ( 'INSERT INTO users...' );
    }
}
?>
 
du bist gut
klau ich mir ma ^^

edit: da tritt ein logischer fehler auf argh. Ich guck nochma durch aber falls wer langeweile hat :
PHP:
<?php
    //Registrierung.php
error_reporting(E_ALL);
     session_start();
include "config.php"; //config variabeln einbinden
     mysql_connect("$db_host","$db_user","$db_pass") or DIE ("Keine Verbindung zur Datenbank möglich");
     mysql_select_db("$db_name") or DIE ("Die Datenbank existiert nicht");
     $user = $_POST["Name"];//Username definieren
     $email = $_POST["EMail"];//E-mail Adresse definieren
     srand(microtime()*100000000);//passwort erzeugen
     $password = rand(154263,10848756);//passwort begrenzung
     $hashpass = md5($password);

     if   (empty ($_POST ["$email"])) $error = 'Bitte gebe deine E-Mail Adresse ein.';
      if  (empty ($_POST ["$user"])) $error = 'Bitte gebe einen Benutzernamen ein.';
       if (empty ($error)) {
    
    $query = mysql_query ( 'SELECT
                                   Name, EMail 
                            FROM  
                                   users
                            WHERE  
                                   Name="'.$_POST["$user"].'" 
                            OR
                                   EMail="'.$_POST["$email"].'"');
     if   ($line = mysql_fetch_assoc($query)) {
      if  ( $line [ 'Name'  ] == $_POST [ "$user"  ] ) $error = "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben.";
       if ( $line [ 'EMail' ] == $_POST [ "$email" ] ) $error = "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte ändere deine Angaben.";
       }

        if (empty($error)) {
         $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')";
         $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); 
         echo  "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>";
         echo  "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>";
         echo  "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>";
         echo  "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>";
       }
      } 
exit();
mysql_close();
$empfaenger = "$email";
$betreff ='Master of Empires Registrierung';
$nachricht ="Hallo,\n<br />
deine Benutzerdaten sind folgende:\n<br />";

echo "Username : '.$user.'\n<br />";
echo "Passwort : '.$passwort'.\n<br />"; 

echo "Vielen Dank für die Registrierung auf Master of Empires.de!\n<br />";
echo "Du kannst dich nun mit den oben genannten Daten einloggen.\n<br />"; 
echo "Das Passwort kannst du im Spiel ändern.\n<br /><br /><br />";


echo "Bitte antworte nicht auf diese Mail!\n<br />";
echo "Diese Mail wurde autmatisch generiert.";
$header = "From: noreply@XX.de\r\n<br />
          Reply-To: rider_on_the_storm@hotmail.de\r\n";
 $geklappt = mail($empfaenger, $betreff, $nachricht, $header);
 if (!$geklappt) {echo "Fehler!! E-Mail konnte nich versandt werden";                 
 }


?>
 
PHP:
 if   ($line = mysql_fetch_assoc($query)) {
      if  ( $line [ 'Name'  ] == $_POST [ "$user"  ] ) $error = "Die eingebegebnde Email Adresse(".$email." )ist bereits vorhanden , bitte ändere deine Angaben.";
       if ( $line [ 'EMail' ] == $_POST [ "$email" ] ) $error = "Der eingegebende Username (".$user.") ist bereits vorhanden, bitte ändere deine Angaben.";
       }

        if (empty($error)) {
         $eintrag = "INSERT INTO users (ID, Name, EMail, Password) VALUES ('', '$user', '$email', '$hashpass')";
         $eintragen = mysql_query($eintrag) or DIE ("MySQL-Fehler: ". mysql_error()); 
         echo  "<div align =\"center\">Registrierung erfolgreich!\n<br /></div>";
         echo  "<div align =\"center\">Dir wird nun eine E-Mail mit deinen Zugangsdaten gesendet,\n<br /></div>";
         echo  "<div align =\"center\">Du kannst dich dann mit deinem Passwort und deinem Benutzernamen Einloggen\n<br /></div>";
         echo  "<a href='http://maofem.ma.ohost.de/login_script.php'>Login</a>";
       }
      } 
exit(); // Du beendest das Script, hast aber die Email nicht abgeschickt!??
//Besser gesagt, Dein Script bricht ab komme was wolle!!
//Falls die Variable nicht leer ist, würde er ja trotzdem eine Email bekommen!!

Ich habe den Code mal kommentiert!

Und noch ein paar Anmerkungen:
1) Ich würde niemals übergebene Werte gleich in ein MySQL Statement schreiben. Böses Foul!!
2) Ich persönlich prüfe immer erst die Fehler ab.
3) Bei Deiner Email stimmt auch was nicht, aber das müsste Dir eigentlich auffallen.
4) Falls eine if Abfrage nicht das macht was Sie machen soll, gib halt davor einfach mal die Variablen aus um zu sehen welchen Wert Sie haben!

So das wars!
 
Zurück
Oben