我遇到此錯誤:無法運行查詢:SQLSTATE [23000]:完整性約束違規:1048'membersince'列不能be null無法運行查詢:SQLSTATE [23000]:完整性約束違規:1048'membersince'列不能爲空
這裏我試圖運行我的註冊頁面。
這裏是代碼。我錯過了什麼?我檢查了我的數據庫表/輸入名稱都正確命名爲「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>
那麼在猜測$ _POST ['membersince']爲null時,你設置插入語句的參數。 –
爲什麼在'membersince'輸入字段中的<?php'之後有一個右括號('>')? – Shell