错误在MySQL中创建记录:"完整性约束违规"

时间:2016-05-02 15:16:24

标签: php mysql

我正在尝试创建一个注册文件,我使用此代码创建它:

<?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.';
    }      
}    
?>

但是我收到了这个错误:

  

完整性约束违规:1048列&#39; user_name&#39;不可能是   空&#39;

以下是我的代码的 HTML 部分。

 <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>

1 个答案:

答案 0 :(得分:1)

Mark Ba​​ker的评论是正确的,并突出了核心问题。您将用户名绑定到变量$ username,但您的SQL语句正在寻找$ user。因为未设置$ user变量,所以它为null并且在执行SQL语句时违反了数据库约束。

将代码调整为

$user =$_POST['user'];

它应该有效