当对DB中的字段使用UNIQUE时,如何捕捉查询错误消息


How can i catch a query error message when using UNIQUE for a field in DB?

我正在将表单值插入数据库。我想知道当将该字段设置为唯一时,如果数据库中已经存在一个值,如何打印错误消息。这是数据库表设计

id(PRIMARY KEY auto_increment) name(char) email(UNIQUE) password(char) date

这里有插入代码:

try {
$sql = "INSERT INTO user_registration SET 
        nom=:nom,
        prenom=:prenom,
        email=:email,
        password=:password,
        sexe=:sexe,
        regis_date=CURDATE()";
 $s = $pdo->prepare($sql);
 $s->bindValue(':nom', $_POST['nom']); 
 $s->bindValue(':prenom', $_POST['prenom']);
 $s->bindValue(':email', $_POST['email']);
 $s->bindValue(':password', password_hash($_POST['pwd1'], PASSWORD_DEFAULT));
 $s->bindvalue(':sexe', $_POST['sexe']);
 $s->execute();
if ($s) {
  echo "insert good";
  exit();
}
  } catch (PDOException $e) 
  {
    $errorinsert='Error inserting values';
    include_once'error_page.html.php';
    exit();
  }

插入部分工作得很好。。。但是,如果数据库中已经存在电子邮件,我如何打印错误消息

我想你是说如何捕捉错误,你可以用$e->getMessage() 来完成

 try {
  //code
 } catch(PDOException $e) {
   $errorinsert = $e->getMessage();
   include_once'error_page.html.php';
   exit();
 }

来源:http://php.net/manual/en/language.exceptions.php