I encountered this error :Failed to run query: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'membersince' cannot be null

我遇到此错误:无法运行查询:SQLSTATE [23000]:完整性约束违规:1048列'membersince'不能为null

here i tried to run my register page.

在这里,我试图运行我的注册页面。

here are the codes. am i missing out anything? i checked my database table/input name were all correctly named "membersince" so what is really going wrong ? :(

这是代码。我错过了什么吗?我检查了我的数据库表/输入名称都正确命名为“membersince”所以真的出了什么问题? :(

   <?php                  
    require("config.php");
    if(!empty($_POST)) 
    { 


       // =====================================================  

        // Check if the username is already taken
        $query = " 
            SELECT 
                1 
            FROM users 
            WHERE 
                username = :username 
        "; 
        $query_params = array( ':username' => $_POST['username'] ); 
        try { 
            $stmt = $db->prepare($query); 

            $result = $stmt->execute($query_params); 

        } 
        catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); } 
        $row = $stmt->fetch(); 
        if($row){ die("This username is already in use"); } 


        $query = " 
            SELECT 
                1 
            FROM users 
            WHERE 
                email = :email 
        "; 
        $query_params = array( 
            ':email' => $_POST['email'] 
        ); 
        try { 
            $stmt = $db->prepare($query);      
            $result = $stmt->execute($query_params); 
        } 
        catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage());} 
        $row = $stmt->fetch(); 
        if($row){ die("This email address is already registered"); } 



        $query = " 
            SELECT 
                1 
            FROM users 
            WHERE 
                nric = :nric 
        "; 
        $query_params = array( ':nric' => $_POST['nric'] ); 
        try { 
            $stmt = $db->prepare($query);       
            $result = $stmt->execute($query_params); 
        } 
        catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); } 
        $row = $stmt->fetch(); 
        if($row){ die("This NRIC is already in use"); }  


                $query = " 
            SELECT 
                1 
            FROM users 
            WHERE 
                mobilenumber = :mobilenumber 
        "; 
        $query_params = array( ':mobilenumber' => $_POST['mobilenumber'] ); 
        try { 
            $stmt = $db->prepare($query);       
            $result = $stmt->execute($query_params); 
        } 
        catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); } 
        $row = $stmt->fetch(); 
        if($row){ die("This Mobile Number is already in use"); }  





        //---------------------------------------------------- Add row to database 
        $query = " 
            INSERT INTO users ( 
                username, 
                password, 
                salt, 
                email,
                name,
                gender,
                dateofbirth,
                nric,
                address,
                postalcode,
                mobilenumber,
                profession,
                membersince



            ) VALUES ( 
                :username, 
                :password, 
                :salt, 
                :email, 
                :name,
                :gender,
                :dateofbirth,
                :nric,
                :address,
                :postalcode,
                :mobilenumber,
                :profession,
                :membersince


            ) 
        "; 

        // Security measures
        $salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647)); 
        $password = hash('sha256', $_POST['password'] . $salt); 
        for($round = 0; $round < 65536; $round++){ $password = hash('sha256', $password . $salt); } 
        $query_params = array( 
            ':username' => $_POST['username'], 
            ':password' => $password, 
            ':salt' => $salt, 
            ':email' => $_POST['email'], 
            ':name' => $_POST['name'], 
            ':gender' => $_POST['gender'], 
            ':dateofbirth' => $_POST['dateofbirth'], 
            ':nric' => $_POST['nric'], 
            ':address' => $_POST['address'], 
            ':postalcode' => $_POST['postalcode'], 
            ':mobilenumber' => $_POST['mobilenumber'], 
            ':profession' => $_POST['profession'], 
            ':membersince' => $_POST['membersince'],
        ); 
        try {  
            $stmt = $db->prepare($query); 

            $result = $stmt->execute($query_params); 
        } 
        catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); } 
        header("Location: successful.php"); 
        die("Redirecting to successful.php"); 
    }                              

?>
<!-- Author: Michael Milstead / Mode87.com
     for Untame.net
     Bootstrap Tutorial, 2013
-->




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="shortcut icon" href="../../assets/ico/favicon.png">

    <title>Sign Up -</title>

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="jumbotron.css" rel="stylesheet">


    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
<script src="../../assets/js/html5shiv.js"></script>
<script src="../../assets/js/respond.min.js"></script>
<![endif]-->
  </head>

<body>
  <?php 
if (empty($_SESSION['user']))
 {
 include_once("header.php");
 }
else     {
      include_once("header2.php");
      }?>

<div class="page-header">
      <div class="container">

    <h1> Register  </h1>


    <form action="register2.php" method="post" role="form"> 
    <div class="form-group">
        <label>Username:</label> 
        <input type="text" name="username" value="" maxlength="20" autofocus required/> 

        </div>
                 <div class="form-group">
        <label>Email: <strong style="color:darkred;">*</strong></label> 
        <input type="email" name="email" value="" maxlength="20" required/> 
              </div>

                             <div class="form-gtroup">
        <label>Password:</label> 
        <input type="password" name="password" value="" maxlength="20" required/> <br /><br />
                                </div>

         <div class="form-group">
          <label>Name:</label> 
        <input type="text" name="name" value="" maxlength="20" required/> 
                           </div>





                                 <div class="form-group">   
                                 <label>Gender:</label> 
                         <div class="radio">

  <label>
    <input type="radio" name="gender" id="male" value="male" required>
    Male
  </label>
</div>
<div class="radio">
  <label>
    <input type="radio" name="gender" id="female" value="female" required>
    Female
  </label>
</div>  
            </div>  

                              <div class="form-group">  

                               <label>Date of Birth:</label>  
                               <input type="date" name="dateofbirth" value="" max="1997-12-31" required>   
                                   </div>


                        <div class="form-group">           
        <label>NRIC:</label> 
        <input type="text" name="nric" value="" maxlength="9" required/> 
                              </div>

                                 <div class="form-group"> 
        <label>Address:</label> 
        <input type="text" name="address" value="" maxlength="50" /> 
                               </div>

                                <div class="form-group">      
        <label>Postal Code:</label> 
        <input type="text" name="postalcode" value="" maxlength="6" pattern="[1-9]{6}" title="Postal code must be 6 digit!" required/> 
                          </div>


                                <div class="form-group">   
        <div class="input-group">
  <span class="input-group-addon">+65</span>
  <input type="text" name="mobilenumber" value="" class="form-control" placeholder="Mobile Number" maxlength="8" pattern="[1-9]{8}" title="Mobile Number must be 6 digit!" required>
</div>
 </div>



                    <div class="form-group">   
        <label>Profession:</label> 
        <input type="text" name="profession" value="" maxlength="20" required> 


                </div>         

                        <div class="form-group">   
            <input class="text" name="membersince" value=" <?php> $todaysdate = date("Y-m-d"); echo $todaysdate?>" type="text" disabled>
                       </div>                                                               

        <input type="submit" class="btn btn-info" value="Register" /> 
         <input type="reset" class="btn btn-info" value="Reset">      


    </form>








</div>      
</div>                         

      <?php include_once("footer.php");?>
</body>
</html>

3 个解决方案

#1


0

I got a similar issue but I fixed it, so would like to share, may be this will be useful to someone...

我有一个类似的问题,但我修复了,所以想分享,可能这对某人有用...

Usually when you encounter

通常当你遇到

Integrity constraint violation: 1048 Column NAME_OF_YOUR_COLUMN

完整性约束违规:1048列NAME_OF_YOUR_COLUMN

This generally occurs if the variable is not set, in your case, the key which is causing this issue is

如果未设置变量,通常会发生这种情况,在您的情况下,导致此问题的键是

<input class="text" name="membersince" 
       value=" <?php> $todaysdate = date("Y-m-d"); echo $todaysdate?>" 
       type="text" disabled>

So if you see here, you are using disabled attribute for this particular field hence, your form element won't send the value of this field to the server, hence... when you use the below in your query

因此,如果您在此处看到,您正在为此特定字段使用disabled属性,因此,您的表单元素不会将此字段的值发送到服务器,因此...当您在查询中使用以下内容时

':membersince' => $_POST['membersince']

Will result in null as there's no key of membersince in $_POST array. So make sure the variable you are assigning should be set.

因为$ _POST数组中没有成员键,所以会导致null。因此,请确保应设置要分配的变量。

更多相关文章

  1. Hibernate不尊重MySQL auto_increment主键字段
  2. mysql 触发器 自动补全字段
  3. MySQL 分区表 partition线上修改分区字段,后续进一步学习partitio
  4. 如何将sql查询中的值存储到变量中?
  5. mysql 同一表中.两个字段值互相复制,从一个字段值复制到另一个
  6. MySQL 数据(字段)类型
  7. mysql中逗号分隔字段的更好替代方案
  8. mysql 常用字段和占用 字节数
  9. hibernate(*.hbm.xml)中新添加的字段被标记为红色(找不到)的解决方法

随机推荐

  1. android - Content-Type大全
  2. php android json
  3. Android zip解压
  4. android flash 遮挡问题
  5. Android下Notification(通知栏)的使用
  6. Android NDK 往控制台打印Log
  7. Android 打开浏览器的几种方法
  8. Android之圆角矩形
  9. 科普篇
  10. Android app版本号的修改