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?
 

Yaslaw

alter Rempler
Moderator
Zudem mischst du bei deinem Versuch mit mysqli die prozuale Methode mit der Objektmethode.
Entweder oder, aber nicht mischen.
 

iUniverse

Grünschnabel
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

}
 

Yaslaw

alter Rempler
Moderator
@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);
    }
 

creamycewie

Mitglied
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?
 

Yugeen

Erfahrenes Mitglied
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}'
 

Yaslaw

alter Rempler
Moderator
@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);
 }