表单提交时处理会话

时间:2014-06-06 12:50:30

标签: php mysql

我有一个Web应用程序,用户填写表单,并生成一个唯一的ID,例如" SC001001"。生成代码是

$result = mysqli_query($con,"SELECT OA_NO FROM student where CUSTID='SC001'");
$x=0;
$num_rows = $result->num_rows;
if($num_rows==0){
    $var1="SC001001";
}
else{

while($row = mysqli_fetch_array($result))
  {
 $next[$x]=substr($row['OA_NO'],2);
 $x=$x+1;
  }

$arrlength=count($next);
$inc=max($next)+1;
$newvar= "SC00".$inc;
$var1=$newvar;
}

将数据保存在数据库中时,OA_NO是主键。

但是当两个用户同时按下提交按钮时,我收到错误消息#1062。存在重复条目并插入第一个请求的输入...

我的问题是如何通过递增第二个值来输入两个值。请帮助!!

2 个答案:

答案 0 :(得分:0)

你不应该以这种方式生成主键。

如果需要顺序编号,则应使用自动递增的字段作为主键(或作为主键的一部分)。

希望有所帮助

答案 1 :(得分:0)

如果在执行插入时找到最大值,则该值应始终唯一。我添加了LPAD函数,以防您想保持userID的长度一致:

INSERT INTO students (`OA_NO`, `userID`)
SELECT MAX(OA_NO) + 1, CONCAT('SC00', LPAD(MAX(OA_NO) + 1, 4,'0'))
FROM students
ON DUPLICATE KEY UPDATE 
    `OA_NO`  = VALUES(OA_NO) + 1, 
    `userID` = CONCAT('SC00', LPAD(VALUES(OA_NO) + 1, 4,'0'));
相关问题