每当我试图填写表格和字段时,我都会遇到问题。联系no&电话没有它自动生成自己的静态否。每次,当我给我的键'Contact_no'“UNIQUE”时,它会产生错误“
异常'PDOException',消息'SQLSTATE [23000]:完整性 约束违规:1062重复条目'2147483647'用于密钥 C:\ wamp \ www \ ipsem6 \ connectivity.php中的'contact_no'':34堆栈跟踪: 0 C:\ wamp \ www \ ipsem6 \ connectivity.php(34):PDO-> exec('INSERT INTO a8 ...')#1 {main}`“
以下是我的register.php页面的代码
<html>
<head>
<title>Register</title>
<style>
.content:before {
content: "";
position: fixed;
left:34px;
right:0;
top:90px;
bottom:20px;
z-index: -1;
display: block;
background-image: url('assets/img/cd.JPG');
width: 1281px;
height: 8000px;
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
}
.content {
overflow: auto;
position: static;
left: 0;
right: 0;
z-index: 0;
margin-left: 0;
margin-right: 0;
}
</style>
<link rel="STYLESHEET" type="text/css" href="style/fg_membersite.css" />
<script type='text/javascript' src='scripts/gen_validatorv31.js'></script>
<link rel="STYLESHEET" type="text/css" href="style/pwdwidget.css" />
<script src="scripts/pwdwidget.js" type="text/javascript"></script>
<link rel="stylesheet" href="style/style1.css" type="text/css" />
</head>
<body class="body" >
<div class="content">
<header class="mainheader" >
<div class="canmenu">
<div class="left mtop10"><a href="http://www.chitkara.edu.in/" title="" rel="home">
<img src="assets/img/chitkara_logo.png" /></a>
</div>
<div id="cssmenu">
<nav><ul>
<li><a href="index.html"><span><b>Home</b></span></a></li>
<li><a href="#"><span><b>About Us</b></span></a></li>
<li><a href="login.html"><span><b>Login</b></span></a></li>
<li class="active"><a href="register.php"><span><b>Register</b> </span></a></li>
<li class="last"><a href=""><span><b>Contact us</b></span></a></li>
</ul></nav>
</div>
<!--<div class="can-menu">
</div>-->
</div>
</div>
<!-- Form Code Start -->
<center><div id='fg_membersite' >
<form id='register' method='post' action="connectivity.php" accept-charset='UTF-8' >
<br>
<br>
<fieldset >
<legend><h1><font size="40" color="BLACK"><b><center><img src="assets/img/canfinal1.jpg" height="100px" width="150px"/><font color="WHITE">Register</font></b></font></h1></legend>
<input type='hidden' name='submitted' id='submitted' value='1'/>
<div class='short_explanation'><font size="2" color="RED"><b>* required fields</b></font></div>
<input type='text' class='spmhidip' />
<div><span class='error'> </span></div>
<div class='container'>
<label for='name' ><font color="WHITE">Your Full Name<font color="RED"><b>*</b></font> :</label><br/>
<input type='text' name='name' id='name' maxlength="50" /><br/>
<span id='register_name_errorloc' class='error'></span>
</div>
<div class='container'>
<label for='email' ><font color="WHITE">Email Address<font color="RED"><b>*</b></font> :</label><br/>
<input type='text' name='email' id='email' maxlength="50" /><br/>
<span id='register_email_errorloc' class='error'></span>
</div>
<div class='container'>
<label for='username' ><font color="WHITE">UserName/University Id<font color="RED"><b>*</b></font> :</label><br/>
<input type='text' name='username' id='username' maxlength="50" /><br/>
<span id='register_username_errorloc' class='error'></span>
</div>
<div class='container'>
<label for='contacts1' ><font color="WHITE">Contact No.<font color="RED"><b>*</b></font> :</label><br/>
<input type='phone' name='contacts1' id='contacts1' /><br/>
</div>
<div class='container'>
<label for='contact2' ><font color="WHITE">Phone No. :</label><br/>
<input type='tel' name='contact2' id='contact2' /><br/>
</div>
<div class='container' >
<label for='password' ><font color="WHITE">Password<font color="RED"><b>*</b></font> :</label><br/>
<div class='pwdwidgetdiv' id='thepwddiv' ></div>
<noscript>
<input type='password' name='password' id='password' maxlength="50" />
</noscript>
<div id='register_password_errorloc' class='error' style='clear:both'></div>
</div>
<div class='container'>
<label for='date' ><font color="WHITE">Date of Birth<font color="RED"><b>*</b></font> :</label><br/>
<input type='date' name='dats' id='dats' maxlength="50" /><br/>
<span id='register_username_errorloc' class='error'></span>
</div>
<div class='container' >
<label><font color="WHITE">Role<font color="RED"><b>*</b></font> :</label>
<select name='rle' id='rle' maxlength="50" >
<option value="Alumni">Alumni</option>
<option value="Mentor">Mentor</option>
<option value="H.O.D">H.O.D</option>
</select>
<span id='register_username_errorloc' class='error'></span>
</div>
<div id="q1" class="form-group">
<label><font color="WHITE">Gender<font color="RED"><b>*</b></font> :</label>
<select class="form-control" id="s" name="s">
<option value="Male" >Male</option>
<option value="Female">Female</option>
</div>
</select>
<div class='container'>
<input type='submit' name='Submit' value='Submit' color="blue" />
</div>
</fieldset>
</form>
<!-- client-side Form Validations:
Uses the excellent form validation script from JavaScript-coder.com-->
<script type='text/javascript'>
// <![CDATA
var pwdwidget = new PasswordWidget('thepwddiv','password');
pwdwidget.MakePWDWidget();
var frmvalidator = new Validator("register");
frmvalidator.EnableOnPageErrorDisplay();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("name","req","Please provide your name");
frmvalidator.addValidation("email","req","Please provide your email address");
frmvalidator.addValidation("username","req","Please provide your University ID.");
frmvalidator.addValidation("password","req","Please provide a password");
frmvalidator.addValidation("date","req","Please provide your D.O.B");
// ]]>
</script>
<!--
Form Code End
-->
</div>
</body>
</html>
以下是我的connectivity.php代码
<?php
// DATABASE CONNECTIVITY & UPLOADING ---->
$connection_error = 'Could Not Connect to server.';
$connection_error2 = 'Could Not Connect to database.';
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'a8172058_portal';
$dsn = "mysql:host=$host;dbname=$database";
try {
$conn = new PDO( $dsn, $user, $password );
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$name=$_POST["name"];
$email=$_POST["email"];
$username=$_POST['username'];
$pass=$_POST['password'];
$contactno=$_POST['contacts1'];
$cont2=$_POST['contact2'];
$dob=$_POST['dats'];
$role=$_POST['rle'];
$gender=$_POST['s'];
$sql= "INSERT INTO `a8172058_portal`.`users` (email,univ_id,password,full_name,role,gender,contact_no1,contact_no2,dob)
VALUES ('$email','$username','$pass','$name','$role','$gender','$contactno','$cont2','$dob');";
$conn->exec($sql);
print "<meta http-equiv=\"refresh\" content=\"0;URL=form1.html\">";
}
catch(PDOException $e)
{
print ($e);
//print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
$conn = null;
?>
答案 0 :(得分:3)
数字2147483647是可以存储在4字节整数字段中的最大十位正整数。
您应该使用更大的字段类型,例如BIGINT
,但对于这种特殊情况,我建议使用VARCHAR
。这是一个电话号码,而不是你需要数学的实际整数。
P.S:您应该使用pepared statements来保护您的应用程序免受SQL注入等威胁。在将密码插入数据库之前,您应始终对密码进行哈希处理。
答案 1 :(得分:2)
实际上,当给定数量超过相应列的长度时,会出现此类问题。
正如你所说,两列都是int(10) and int(11)
。所以请转到varchar(256)
。
注意: - 因为它是电话号码所以你可以去varchar
,但是如果你有任何整数要进行一些计算,那就去bigint
。感谢。强>
答案 2 :(得分:-1)
我遇到了这个问题,它是由于语句绑定方法引起的
$stmt = $con->prepare("UPDATE user set UserName = ?, Password = ?, Email = ?, FullName = ? WHERE UserID = ?"); // i was forget 'WHERE' to check the registered data so it always give me "fatal error" 'Duplicate data'
$stmt->execute(array($username, $pass, $email, $fullname, $id));