'PDOException',消息'SQLSTATE [23000]:完整性约束违规:1062重复条目'2147483647'用于键'contact_no'

时间:2016-04-22 06:53:33

标签: php mysql pdo

每当我试图填写表格和字段时,我都会遇到问题。联系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;




  ?>

请帮我解决这个问题。我的DM是 enter image description here

无论我给出什么值,它总是给出下图中标记的静态值。 enter image description here

3 个答案:

答案 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));