2014-06-21 6 views
-2

après l'exécution de mon code j'ai eu ce genre d'erreur, quelqu'un peut-il m'aider à le résoudre s'il vous plaît. L'erreur commence après avoir mis un code à filtrer si l'email est en double ou non dans la base de données.erreur exception «PDOException» exception dans mon pdo

est l'erreur ici, je suis arrivé:

img

<?php 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$db = "test"; 

$dbc = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass); 
$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


$name = @$_POST['name']; 
$age = @$_POST['age']; 
$address = @$_POST['address']; 
$gender = @$_POST['gender']; 
$email = @$_POST['email']; 

     $dupesql = "SELECT * FROM students WHERE email = :email "; 

     $dupesql = $dbc->prepare($dupesql); 
     $dupesql->bindParam(':name', $email); 
     $dupesql->execute(); 
     $num_rows = $dupesql->rowCount(); 

     if($num_rows === 0) 
     { 
     echo "1"; 
     $q = "INSERT INTO students(name, age, address, gender, email) VALUES(:name, :age, :address, :gender, :email)"; 

     $query = $dbc->prepare($q); 
     $query->bindParam(':name', $name); 
     $query->bindParam(':age', $age); 
     $query->bindParam(':address', $address); 
     $query->bindParam(':gender', $gender); 
     $query->bindParam(':email', $email); 

     $results = $query->execute(); 


     }else{ 
     echo "0"; 
     exit; 
     }  

?> 
+2

'$ dupesql-> bindParam (': nom', $ email);'? Il devrait ': email' –

+0

@ 1nflktd oh merci j'ai raté ... mettre en réponse afin que je puisse voter – user3762241

+1

Pourquoi n'avez-vous pas attraper l'exception? Pourquoi y a-t-il un opérateur silencieux devant $ _POST? Pourquoi utilisez-vous bindParam et non bindValue? Connaissez-vous la différence entre les deux? –

Répondre

1

Eh bien, vous êtes face à cette erreur parce que vous utilisez un mauvais paramètre dans votre requête.

$dupesql->bindParam(':name', $email); 

:name n'existe pas, il devrait :email.

Questions connexes