2016-10-26 27 views
0

すべてのコードは動作していますが、同じ電子メールで複数のユーザーを作成しても、私のコードに入れても、それを動作させることはできませんし、SQLSTATE [23000]を作成するにはどうすればいいですか?整合性制約違反:1062が "エラーメールが既に存在しています"に変更しますか?出来ますか?SQLSTATE [23000]の処理方法:整合性制約違反:1062

addform.php

と私はまた、私はちょうどよ重複

<style type="text/css"> 
#dis{ 
display:none; 
} 
</style> 




<div id="dis"> 
<!-- here message will be displayed --> 
</div> 


<form method='post' id='emp-SaveForm' action="#"> 

<table class='table table-bordered'> 

    <tr> 
     <td>First Name</td> 
     <td><input type='text' name='fname' class='form-control' required /></td> 
    </tr> 

    <tr> 
     <td>Last Name</td> 
     <td><input type='text' name='lname' class='form-control' required></td> 
    </tr> 

    <tr> 
     <td>Contact Number</td> 
     <td><input type='number' name='contactnum' class='form-control' required></td> 
    </tr> 

    <tr> 
     <td>Email</td> 
     <td><input type='email' name='email' class='form-control' required /></td> 
    </tr> 

    <tr> 
     <td>Password</td> 
     <td><input type="password" name='pass' class='form-control' required /></td> 
    </tr> 

    <tr> 
     <td>Language</td> 
     <td><input type='text' name='lang' class='form-control' required /></td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
     <button type="submit" class="btn btn-primary" name="btn-save" id="btn-save"> 
     <span class="glyphicon glyphicon-plus"></span> Save this User 
     </button> 
     </td> 
    </tr> 

</table> 

create.php

<?php 
require_once 'dbconfig.php'; 


if($_POST) 
{ 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $contactnum = $_POST['contactnum']; 
    $email = $_POST['email']; 
    $pass = $_POST['pass']; 
    $lang = $_POST['lang']; 
    try{ 

     $stmt = $db_con->prepare("INSERT INTO tbluser(fname,lname,contactnum,email,pass,lang) VALUES(:ufname,:ulname,:ucontact,:uemail,:upass,:ulang)"); 
     $stmt->bindParam(":ufname", $fname); 
     $stmt->bindParam(":ulname", $lname); 
     $stmt->bindParam(":ucontact", $contactnum); 
     $stmt->bindParam(":uemail", $email); 
     $stmt->bindParam(":upass", $pass); 
     $stmt->bindParam(":ulang", $lang); 
     if($stmt->execute()) 
     { 
      echo "Successfully Added"; 
     } 
     else{ 
      echo "Query Problem"; 
     } 
    } 
    catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
} 

?> 

がある場合は、エラーメッセージを表示したいですPHPの新機能私はデータベースにPDOを使用していますが、とにかく助けてくれてありがとうあなたがコードを貼り付けるだけで使うことができるかどうかを教えてください:)

+0

pdoが良いこと –

+1

PDOは間違いなく良いことです。あなたが見逃しているのはたぶんユニークなインデックスでしょう – e4c5

+0

上記のように、電子メールフィールドにもユニークなインデックスが存在しない可能性が最も高いです。ユニークなインデックスを使用すると、重複値を挿入しようとすると自動的にエラーが発生しますユニークなインデックスに重複をチェックする1つの方法は、あなたが 'SELECT 'でそれを挿入する前に、あなたが挿入したい電子メールを検索することです。 – Epodax

答えて

0

create.phpを編集し、データベースから電子メールチェックコードを追加する必要があります。

+0

私はそれを試してみます – Joe

+0

これはまだSQLSTATE [23000]を取得しようとしました:整合性制約違反:1062キー '電子メール'の重複エントリ '[email protected]' – Joe

0

PDOエラーモードを設定する必要があります。例:

/* @var $dbConn PDO */ 
$dbConn = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUsername, $dbPassword); 
/* set the PDO error mode to exception */ 
$dbConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
関連する問題