Php 如果另一个表中存在重复项,则更改自动增量值

Php 如果另一个表中存在重复项,则更改自动增量值,php,mysql,auto-increment,Php,Mysql,Auto Increment,我正在尝试为没有指定身份证件的申请人生成学生注册过程的临时ID。然而,也有一些情况下,一些申请人使用任意的身份证号码,这些号码是我们选择用于生成官方临时身份证号码的序列中的号码 当我创建一个临时ID(通过c_nic表)时,我需要检查申请人是否已经使用了该ID(在a_student表中),如果是,则将该号码跳到c_nic中的下一个号码,以此类推。我正在使用临时ID表(c\u nic)的auto\u increment) e、 当一个学生来注册时,他没有身份证号码,我们将为他生成一个临时身份证。这将

我正在尝试为没有指定身份证件的申请人生成学生注册过程的临时ID。然而,也有一些情况下,一些申请人使用任意的身份证号码,这些号码是我们选择用于生成官方临时身份证号码的序列中的号码

当我创建一个临时ID(通过
c_nic
表)时,我需要检查申请人是否已经使用了该ID(在
a_student
表中),如果是,则将该号码跳到
c_nic
中的下一个号码,以此类推。我正在使用临时ID表(
c\u nic
)的
auto\u increment

e、 当一个学生来注册时,他没有身份证号码,我们将为他生成一个临时身份证。这将是
c_nic
表中的自动增量。比如说,11001111。在发布此ID供该学生使用之前,我需要检查此ID是否被其他学生错误使用。如果11001111被其他学生用于注册,我需要给当前学生下一个可用的ID,可能是11001112,或者如果也使用11001113,依此类推。当新学生获得新的临时ID时,我需要调整
c_nic
表中的auto_inc值,以便第二个新学生获得下一个可用的ID号

我尝试使用以下代码,但即使
a\u students
表中已经存在记录,自动增量也不会增加

$refid = mysqli_query($conn, "SELECT `AUTO_INCREMENT` AS id FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '".DB_NAME."' AND TABLE_NAME = 'c_nic'");
$refnum = mysqli_fetch_assoc($refid);
$ref = $refnum["id"];   
$refnew = $refnum["id"]+1;  
$chkduplicate = mysqli_query($conn, "SELECT nic FROM a_students WHERE nic='$ref'");
do {
    $chkduplicate = mysqli_query($conn, "ALTER TABLE c_nic AUTO_INCREMENT = '$refnew'");
$refnew = $refnum["id"]+1;
echo '<br/>Ref: '.$ref;
echo '<br/>Ref New: '.$refnew;
}
while (mysqli_affected_rows($conn) >0 );
$refid=mysqli_query($conn,“选择'AUTO_INCREMENT`作为信息_SCHEMA.TABLES中的id,其中TABLE_SCHEMA='”.DB_NAME.”和TABLE_NAME='c_nic');
$refnum=mysqli\u fetch\u assoc($refid);
$ref=$refnum[“id”];
$refnew=$refnum[“id”]+1;
$chkduplicate=mysqli_query($conn,“从a_学生中选择nic,其中nic='$ref');
做{
$chkduplicate=mysqli_query($conn,“altertable c_nic AUTO_INCREMENT=”$refnew');
$refnew=$refnum[“id”]+1;
回声'
参考:'.$Ref; echo'
Ref New:'。$refnew; } 而(mysqli_影响_行($conn)>0);
我建议您使用表作为唯一学生id的自动递增和主键 如下

ALTER TABLE a_students
ADD PRIMARY KEY (nic);
ALTER TABLE a_students AUTO_INCREMENT = 1;

请在您的问题中添加更详细的说明,说明您正在尝试做什么,以及您的临时身份证注册应该如何工作。乱搞自动增量值不是一个好主意。解释为什么不能像正常情况一样使用生成的自动增量id。@Progman我刚才这么做了。我不需要生成自动ID。如果不能用于此目的,我正在考虑增加ID。为什么不从同一个自动增量列为所有学生提供ID?为什么要将学生分为临时学生和非临时学生,特别是当你检查使用过的ID时?@Progman,因为大多数学生都有ID。这也是他们的学生证。但年幼的孩子没有国家颁发的身份证。他们没有办法注册课程,而不是使用任意ID。我不想给别人一个已经被另一个学生使用的任意ID。你为什么不给学生所谓的“学生号”(见),这与国家颁发的ID无关?州政府发布的ID将只是学生表中的一列,对于临时学生(如孩子),它将为
NULL