我有一个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/