我有一个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。存在重复的条目,并且插入了第一个请求的条目...

我的问题是我应该如何在增加第二个值的同时输入两个值。请帮助!

最佳答案

如果在插入时发现最大值,则该值应始终是唯一的。我添加了LPAD函数,以防用户ID的长度保持一致:

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'));

关于php - 提交表单时处理 session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24082271/

10-09 23:05