2016-05-02 19 views
1

私は、登録ファイルを作成しようとしていますし、私はそれを作成するため、このコードを使用:エラー:「整合性制約違反」

<?php 
require 'connection.php'; 

if (isset($_POST['submit'])) { 
    $res= $conn->prepare("Insert into user (Name,Email,user_name,password)Values (:name,:email,:user,md5(:pass))"); 
    $res->bindParam(':name', $name); 
    $res->bindParam(':email', $email); 
    $res->bindParam(':user', $user); 
    $res->bindParam(':pass', $pass); 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $username =$_POST['user']; 
    $password = $_POST['pass']; 

    $res->execute(); 

    if ($res==TRUE) { 
     echo 'Registered successfully'; 
    } else { 
     echo 'There was some error.'; 
    }  
}  
?> 

しかし、私はこのエラーを取得する:

Integrity constraint violation: 1048 Column 'user_name' cannot be null'

私のコードの一部です。

<body> 
     <form action="Registration.php" method="post" > 
      Name:<br> 
      <input type="text" name="name"/><br> 
      Email:<br> 
      <input type="text" name="email" /><br> 
      Username:<br> 
      <input type="text" name="user" /><br> 
      Password:<br> 
      <input type="password" name="pass" /><br>     
      <input type="submit" name="submit" value="SignUp!"/> 
     </form>  
    </body> 
+0

$ユーザ名を動作するはず== $ユーザー..... '$ RES-> bindParam( ':ユーザー'、$ユーザー)!; '$ username = $ _ POST ['user'];' –

+0

あなたは '$ password'で同様の問題を起こすでしょうが、あなたには叫ばないかもしれません... – MonkeyZeus

+0

あなたはポスト、彼らはバインド部分の前に配置する必要があります – Nick

答えて

1

Mark Ba​​kerのコメントは正しいものであり、コアの問題点を強調しています。ユーザー名を変数$ usernameにバインドしていますが、SQL文で$ userが検索されています。 $ user変数は設定されていないため、SQLステートメントの実行時にNULLであり、データベース制約に違反します。

$user =$_POST['user']; 

にあなたのコードを調整し、それが

+0

あなたはそのようなマイナーな感謝のおかげで、 – Nibesh

関連する問題