Prüfen ob Datensatz schon existiert

creamycewie

Mitglied
Hi.

Ich will mittels PHP prüfen, ob ein Datensatz schon in der MySQL vorhanden ist.

jetz hab ich folgendes zusammengestöpselt:

Code:
$sql_command3 = 
						"
						SELECT Email, UserID
						From UserData
						WHERE Email = '$email';";
							mysqli_query($customer_database , $sql_command3);
							$result = $customer_database->query($sql_command3);
						if (!$result != NULL){
							echo "Es existiert schon eine Email-Adresse ".$email."! ";
						} 
						else {
// do stuff
}

Hier bekomm ich aber IMMER die Meldung dass schon existiert, obwohl die Adresse lt. PhpMyAdmin NICHT existiert.

Woran könnt das liegen?
 
Zudem mischst du bei deinem Versuch mit mysqli die prozuale Methode mit der Objektmethode.
Entweder oder, aber nicht mischen.
 
PHP:
function doesEmailExist($email){
	    $exit = FALSE;
	    $result = @mysql_query("SELECT * FROM UserData WHERE Email='$email'");
	    if (mysql_num_rows($result) != 0){
	        $exit = TRUE;
	    }
	    return $exit;
	}


...

if (doesUsernameExist($_POST['Email'])){

//do whatever

}else{

//do whatever

}
 
@iUniverse
Guter Ansatz
Aber leider ein wenig verkomplizierte Funktion
Prüfen und wenn Treffer TRUE ausgeben....
Zudem: Nicht * im SQL verwenden. Es ist nicht Nötig alle Felder auszulesen (Denk an die Performance).

PHP:
function doesEmailExist($email){
        $result = @mysql_query("SELECT Email FROM UserData WHERE Email='{$email}'");
        return (bool) mysql_num_rows($result);
    }

Bei Grossen Datenmengen kann man das Zählen auch der DB überlasen
PHP:
function doesEmailExist($email){
        $result = @mysql_query("SELECT COUNT(Email) AS cnt FROM UserData WHERE Email='{$email}'");
        return (bool) mysql_result($result, 0);
    }
 
Also ich versuch es jetz mit folgendem:

PHP:
$input_email = "test@me.com";

								function doesEmailExist($email){
								$result = @mysql_query("SELECT COUNT(Email) AS cnt FROM UserData WHERE Email='{$input_email}'");
								return (bool) mysql_result($result, 0);
								} 
								
								if (doesEmailExist($input_email)){

							echo ("Email existiert");
							
							}

und bekomm folgenden Error:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in /home/.sites/127/site693/web/TEST/shop/login.php on line 41

Woran liegt das?
 
Hast du schon mal mit mysql_error() versucht? also:
PHP:
$result = mysql_query("bla") or die(mysql_error());

und noch eine Sache, du suchst ja nach der E-Mail Adresse in deinem SQL Statement, und der Datentyp sollte Varchar sein oder nicht? Änder mal dein WHERE EMail = '{$input_email}'
in WHERE Email LIKE '{$input_email}'
 
@crack
Nope. Wenn er über alle Resultate zählen will, braucht es kein GROUP BY

@Yugeen
Jepp, das 'or die' ist immer gut. Siehe auch PHP MySQL Debug Queries
Das = ist schon richtig. Auch bei VARCHAR. LIKE wird nur für partielle Suche verwendet. Also LIKE 'name%'.


Das Haubtproblem sind die Variablennamen
PHP:
//Der Parameter heisst hier $email
function doesEmailExist($email){
    //Und hier arbeitest du mit $input_email. Diese Variable wurde innerhalb der Funktion nie gesetzt - ergo ist sie leer
    $result = @mysql_query("SELECT COUNT(Email) AS cnt FROM UserData WHERE Email='{$input_email}'");
    return (bool) mysql_result($result, 0);
 }
 
Zurück