2017-11-26 1 views
0

Ich möchte meine Datenbank nicht doppelte E-Mails einfügen, habe ich den eindeutigen Schlüssel und es funktioniert perfekt. Dem Benutzer wird jedoch keine Nachricht angezeigt, und es scheint, als ob er sich korrekt angemeldet hat, aber als er sich anmeldet, findet er heraus, dass es unmöglich ist.Mysql Fehlermeldung mit PDO

Ich habe diesen Code gemacht, aber es gibt Erfolg für beide Situationen.

$sql4 = "INSERT INTO users (username, email, password, id_group, id_company) 
VALUES (:username, :email, :password, :id_group, :id_company)"; 
    $stmt4 = $PDO->prepare($sql4); 
    $stmt4->bindParam(':username', $username); 
    $stmt4->bindParam(':email', $email); 
    $stmt4->bindParam(':password',md5($password)); 
    $stmt4->bindParam(':id_group', $id_group); 
    $stmt4->bindParam(':id_company', $id_company); 
    $stmt4->execute(); 

$erro = mysql_errno(); 
if ($erro == 0) { 
    echo '<p align="center">Success!</p>'; 
} elseif ($erro == 1062) { 
    echo '<p align="center"> Email already registered. Try using another. 
</p>'; 
} 
+0

Nach dem Einsatz, beeinflusst die Anzahl der Zeilen überprüfen. Wenn nicht, Fehler für den Benutzer anzeigen. –

+0

Gefällt mir? Es heißt, dass ich rowCount für ein Nicht-Objekt aufruft: if ($ sql4-> rowCount() == 0) { echo "test"; } – Fabi

Antwort

0

habe ich versucht, einen anderen Weg und es funktionierte:

$sql4 = $PDO->prepare("SELECT COUNT(*) as us FROM users WHERE email = 
:email"); 
    $sql4->bindValue(":email",$email); 
    $sql4->execute(); 
    $row = $sql4->fetch(); 

    if($row['us'] == '0'){ 

$sql4 = "INSERT INTO users (username, email, password, id_group, id_company) 
VALUES (:username, :email, :password, :id_group, :id_company)"; 
$stmt4 = $PDO->prepare($sql4); 
$stmt4->bindParam(':username', $username); 
$stmt4->bindParam(':email', $email); 
$stmt4->bindParam(':password',md5($password)); 
$stmt4->bindParam(':id_group', $id_group); 
$stmt4->bindParam(':id_company', $id_company); 
$stmt4->execute(); 

return '1'; 
    //se o email for repetido exibe mensagem de erro.  
    }else{ 
     echo 'Email already registered. Try another.'; 
    }