Php 获取表1中的最后一个id以确定表2中的新id

Php 获取表1中的最后一个id以确定表2中的新id,php,mysql,auto-increment,multiple-tables,Php,Mysql,Auto Increment,Multiple Tables,我有一个旧的注册系统,还有一个新的。两张桌子。 旧系统包含一个旧的类别,而新系统包含一些新的类别,这些类别目前还无法在旧系统中实现。 因此,将所有内容转移到其中一个系统目前不是一个选项 我的问题是: 我需要连接两个表,以便ID以自动递增的方式运行,并以某种方式彼此跟随 下面是一个场景: //表1=旧系统车辆 //表2=新系统拖拉机、卡车、船用 表1中登记了一辆新车,其ID为13579, 然后,在表2中登记了其他车辆,并应获得ID:13580, 当一辆新车再次登记在表1中时,它应该得到ID:135

我有一个旧的注册系统,还有一个新的。两张桌子。 旧系统包含一个旧的类别,而新系统包含一些新的类别,这些类别目前还无法在旧系统中实现。 因此,将所有内容转移到其中一个系统目前不是一个选项

我的问题是: 我需要连接两个表,以便ID以自动递增的方式运行,并以某种方式彼此跟随

下面是一个场景: //表1=旧系统车辆 //表2=新系统拖拉机、卡车、船用

表1中登记了一辆新车,其ID为13579, 然后,在表2中登记了其他车辆,并应获得ID:13580, 当一辆新车再次登记在表1中时,它应该得到ID:13581。 等等

在我看来是这样的: 在将新车添加到其中一个表中之前,务必在另一个表中进行查找,并在设置新ID之前检查最后一个/最高ID和do+1

更新20120614: 以下是我提出的一个解决方案:

$qry_tbl1 = mysql_query('SELECT MAX(id) AS tbl1_max_id FROM tbl1');
$get_tbl1 = mysql_fetch_assoc($qry_tbl1); extract($get_tbl1);

$qry_tbl2 = mysql_query('SELECT MAX(id) AS tbl2_max_id FROM tbl2');
$get_tbl2 = mysql_fetch_assoc($qry_tbl2); extract($get_tbl2);

$new_max_id = max(array($tbl1_max_id,$tbl2_max_id)) + 1;
这不是一个好的解决方案,但是我唯一能做的。 用户点击submit按钮后,我立即执行此操作并插入一条新记录。 然后,在脚本的下一步,基于$new_max_id,我用额外的数据更新该记录


这是一个可以接受的解决方案吗

我想你可以用这种方法

或者,您可以使用以下字段创建新表:

id自动递增,表格id,表格名称


并将table_id保存到其中,table_id是表实体的id,table_name是一些属性,用于确定该id属于哪个表。在选择过程中,您必须使用该表来确定要使用的id。这将避免id计算。

我认为您可以使用这种方法

或者,您可以使用以下字段创建新表:

id自动递增,表格id,表格名称


并将table_id保存到其中,table_id是表实体的id,table_name是一些属性,用于确定该id属于哪个表。在选择过程中,您必须使用该表来确定要使用的id。这将避免id计算。

一种方法是查询表1中的最后一个id,并在使用表1的查询结果为第二个表创建insert语句时执行+1。如果是这样,请在问题上加上标记,然后发布您已经使用的php/sql。如果许多用户可能同时添加车辆,您应该在事务中将读取先前id的请求和设置新id的请求分组,并使用锁来避免并发问题。这不是家庭作业。我还没有任何php代码,因为我不知道从哪里开始。。。我可以依赖这个方法吗:从其他_表中选择MAXID作为last_id,然后执行$new_id=$get['last_id']+1;一种方法是查询表1中的最后一个ID,并在使用表1的查询结果为第二个表创建insert语句时执行+1。如果是这样,请在问题上加上标记,然后发布您已经附带的任何php/sql。如果许多用户可能同时添加车辆,您应该在事务中将读取先前id的请求和设置新id的请求分组,并使用锁来避免并发问题。这不是家庭作业。我还没有任何php代码,因为我不知道从哪里开始。。。我可以依赖这个方法吗:从其他_表中选择MAXID作为last_id,然后执行$new_id=$get['last_id']+1;使用auto increment创建一个新表并首先插入到该表中,然后使用mysql_insert_ID获取ID以获取哪个表的新ID?这听起来很有希望,虽然我真的不希望有另一个表…不,您需要在两个表中插入。在表1和这个关系表中。例如:table1:id=356它是自动递增的,您需要保存在relation_table:id=800它是自动递增的table_id=356,table_name=table1。当您选择时,您必须连接表。创建一个具有自动递增功能的新表,并首先插入到此表中,然后使用mysql_insert_ID获取该表的新ID?这听起来很有希望,虽然我真的不希望有另一个表…不,您需要在两个表中插入。在表1和这个关系表中。例如:table1:id=356它是自动递增的,您需要保存在relation_table:id=800它是自动递增的table_id=356,table_name=table1。当您选择时,您必须连接表。