Php 无法运行查询:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查相应的手册
我的register.php页面有问题。一旦我完成了所有表格,这就是 完整错误消息: 无法运行查询:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near')值(第16行的“PeterName”、“FCebef4858224A”的正确语法 注意“PeterName”是我输入的用户名。 使用Bootstrap v3.0 btwPhp 无法运行查询:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查相应的手册,php,mysql,sql,twitter-bootstrap,Php,Mysql,Sql,Twitter Bootstrap,我的register.php页面有问题。一旦我完成了所有表格,这就是 完整错误消息: 无法运行查询:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near')值(第16行的“PeterName”、“FCebef4858224A”的正确语法 注意“PeterName”是我输入的用户名。 使用Bootstrap v3.0 btw <?php requir
<?php
require("config.php");
if(!empty($_POST))
{
// Ensure that the user fills out fields
if(empty($_POST['username']))
{ die("Please enter a username."); }
if(empty($_POST['password']))
{ die("Please enter a password."); }
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{ die("Invalid E-Mail Address"); }
if(empty($_POST['name']))
{ die("Please enter your name."); }
if(empty($_POST['gender']))
{ die("Please enter your gender."); }
if(empty($_POST['dateofbirth']))
{ die("Please enter your Date or Birth."); }
if(empty($_POST['nric']))
{ die("Please enter your NRIC."); }
if(empty($_POST['address']))
{ die("Please enter your address."); }
if(!filter_var($_POST['postalcode'], FILTER_SANITIZE_NUMBER_INT))
{ die("Invalid Postal Code"); }
if(!filter_var($_POST['mobilenumber'], FILTER_SANITIZE_NUMBER_INT))
{ die("Invalid Mobile Number"); }
if(empty($_POST['profession']))
{ die("Please enter your profession."); }
// =====================================================
// 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,
) VALUES (
:username,
:password,
:salt,
:email,
:name,
:gender,
:dateofbirth,
:nric,
:address,
:postalcode,
:mobilenumber,
:profession,
)
";
// 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['dateofbith'],
':nric' => $_POST['nric'],
':address' => $_POST['address'],
':postalcode' => $_POST['postalcode'],
':mobilenumber' => $_POST['mobilenumber'],
':profession' => $_POST['profession'],
);
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");
}
?>
<!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="" />
</div>
<div class="form-group">
<label>Email: <strong style="color:darkred;">*</strong></label>
<input type="text" name="email" value="" />
</div>
<div class="form-group">
<label>Password:</label>
<input type="password" name="password" value="" /> <br /><br />
</div>
<div class="form-group">
<label>Name:</label>
<input type="text" name="name" value="" />
</div>
<div class="form-group">
<label>Gender:</label>
<div class="radio">
<label>
<input type="radio" name="gender" id="male" value="male" checked>
Male
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="gender" id="female" value="female">
Female
</label>
</div>
</div>
<div class="form-group">
<label>Date of Birth:</label>
<input type="text" name="dateofbirth" value="" />
</div>
<div class="form-group">
<label>NRIC:</label>
<input type="text" name="nric" value="" />
</div>
<div class="form-group">
<label>Address:</label>
<input type="text" name="address" value="" />
</div>
<div class="form-group">
<label>Postal Code:</label>
<input type="text" name="postalcode" value="" />
</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">
</div>
</div>
<div class="form-group">
<label>Profession:</label>
<input type="text" name="profession" value="" />
</div>
<input type="submit" class="btn btn-info" value="Register" />
</form>
</div>
</div>
<?php include_once("footer.php");?>
</body>
</html>
报名-
登记
用户名:
电子邮件:*
密码:
姓名:
性别:
男性的
女的
出生日期:
NRIC:
地址:
邮政编码:
+65
职业:
问题是查询中的语法问题。指出它时的错误非常明显,但现在您可以看到:
正如@andrewsi所指出的那样,您有几个逗号:
$query = "
INSERT INTO users (
username,
password,
salt,
email,
name,
gender,
dateofbirth,
nric,
address,
postalcode,
mobilenumber,
profession, <== This comma is extra. Remove it.
) VALUES (
:username,
:password,
:salt,
:email,
:name,
:gender,
:dateofbirth,
:nric,
:address,
:postalcode,
:mobilenumber,
:profession, <== This comma is also extra. Remove.
)
";
profession,
(以及:profession,
)后面的尾随逗号是“ordie
”错误处理的方法非常简单。我希望你能想出更好的方法。如果你使用了一个this代码炖,模型、视图和控制器代码的混乱可以组织得更好。嘿,它可以工作!谢谢!但是我得到了这个:无法运行查询:SQLSTATE[23000]:完整性约束冲突:1048列“dateofbirth”不能为null@andrewsi@JohnTan-那也是一个打字错误。$\u POST['dateofby']
丢失了一封信。啊,它很有效!非常感谢!我真的非常感谢!回想起来,错误都是很小的错误。我已经编写了大约10个小时的代码,因此导致了忽略和法律上的错误…你刚刚让我的视力免于恶化。:D@andrewsi@JohnTan-这就是咖啡的作用;)
$query = "
INSERT INTO users (
username,
password,
salt,
email,
name,
gender,
dateofbirth,
nric,
address,
postalcode,
mobilenumber,
profession
) VALUES (
:username,
:password,
:salt,
:email,
:name,
:gender,
:dateofbirth,
:nric,
:address,
:postalcode,
:mobilenumber,
:profession
)
";