Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 表之间的自动增量_Php_Mysql_Sql_Forms - Fatal编程技术网

Php 表之间的自动增量

Php 表之间的自动增量,php,mysql,sql,forms,Php,Mysql,Sql,Forms,我有两张桌子,一本书和一本书。两者的结构相同 id title author isbn year 然后,我在两个不同的php页面上有两个web表单,它们将数据发送到相应的表-“Book Form”和“G Book Form” 当我提交“Book Form”时,Book table id成功递增,同样,当我提交“G Book Form”时,gbook table id递增。但是,如何设置表,使两个表之间的id连接/共享?也就是说,id将从最后一次表单插入结束的位置自动递增 我之所

我有两张桌子,一本书和一本书。两者的结构相同

id   title   author   isbn   year
然后,我在两个不同的php页面上有两个web表单,它们将数据发送到相应的表-“Book Form”和“G Book Form”

当我提交“Book Form”时,Book table id成功递增,同样,当我提交“G Book Form”时,gbook table id递增。但是,如何设置表,使两个表之间的id连接/共享?也就是说,id将从最后一次表单插入结束的位置自动递增

我之所以想这样做,但不了解最佳方法,是因为我的“图书表单”允许用户手动添加图书信息。而“G图书表单”则使用谷歌图书Api自动填充图书信息

理想情况下,我希望我的书桌是这样的

id
1
2
4
5
8
9
id
3
6
7
和gbook表类似

id
1
2
4
5
8
9
id
3
6
7

这里对php/mysql非常陌生,因此任何建议或指导都非常感谢。如果需要,我可以提供现有代码。

最好的方法可能是将它们放在同一个表中,用一个特殊的列指定它是哪种类型的书。

最好的方法可能是将它们放在同一个表中,用一个特殊的列指定它是哪种类型的书。

另一种方法可能会有所帮助。将所有数据放在一个表中,添加一个额外的列FK,并创建另一个包含图书类型的表

tbl_书籍

tbl_图书类型

另一种选择可能会有所帮助。将所有数据放在一个表中,添加一个额外的列FK,并创建另一个包含图书类型的表

tbl_书籍

tbl_图书类型


您可以通过php实现这一点。每次表中的一个发生更改时,都必须运行alter查询。例如: 如果要向book表中插入值,可以使用mysql\u insert\u ID获取该表的增量ID,并在alter查询中使用它

    $id = mysql_insert_id() + 1;
    ALTER TABLE tablename AUTO_INCREMENT= $id;

尽管这种方法不被推荐,也不是标准做法。

您可以通过php实现这一点。每次表中的一个发生更改时,都必须运行alter查询。例如: 如果要向book表中插入值,可以使用mysql\u insert\u ID获取该表的增量ID,并在alter查询中使用它

    $id = mysql_insert_id() + 1;
    ALTER TABLE tablename AUTO_INCREMENT= $id;
尽管这种方法不被推荐,也不是一种标准做法。

另一个想法:

从两个表中禁用自动递增。使用SQL命令MAXiD从两个表中读取最大值并递增结果:

从Book Form中选择MAXiD并将其存储到变量中。然后执行SELECTMAXID from G Book Form store it。比较两个值并将其递增一

不过,在我看来,最好的主意来自blue112。有时,推广数据库是一个好主意。

另一个想法:

从两个表中禁用自动递增。使用SQL命令MAXiD从两个表中读取最大值并递增结果:

从Book Form中选择MAXiD并将其存储到变量中。然后执行SELECTMAXID from G Book Form store it。比较两个值并将其递增一


不过,在我看来,最好的主意来自blue112。有时推广数据库是个好主意。

为什么要这样做?不受支持的功能是不这样做的一个好迹象。更新时有一个原因,这也是非常新的,所以请欣赏评论。其他数据库,如Oracle、SQL Server、Postgres等有可定义的序列,您可以应用于任何表,但据我所知,MySQL没有。除了运行一个存储过程来检查一个表的最大值之外,我认为最好的解决方案是将它们都放在一个表上。为什么要这样做?不受支持的功能是不这样做的一个好迹象。更新时有一个原因,这也是非常新的,所以请欣赏评论。其他数据库,如Oracle、SQL Server、Postgres等有可定义的序列,您可以应用于任何表,但据我所知,MySQL没有。除了运行一个存储过程来检查一个表的最大值之外,另一个我认为最好的解决方案是将它们都放在一个表上。这是可行的,我创建了一个新列,分别添加了“g”或“m”。这是可行的,我创建了一个新列,分别添加了“g”或“m”。