php mysql插入多个列_php – MySQL插入多个表? (数据库规范化?)

这篇博客讨论了如何在MySQL中无法直接插入多个表的问题,并提出了使用事务来确保数据一致性。通过BEGIN和COMMIT包裹INSERT语句,可以确保要么所有插入操作成功,要么全部回滚,避免部分插入导致的数据不一致。还提到了LAST_INSERT_ID()的使用限制以及在事务中存储和使用该ID的两种方法。
摘要由CSDN通过智能技术生成

不,你不能在一个MySQL命令中插入多个表。但您可以使用事务。

BEGIN;

INSERT INTO users (username, password)

VALUES('test', 'test');

INSERT INTO profiles (userid, bio, homepage)

VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');

COMMIT;

编辑:你说“所有这一次试图找出来,它仍然不工作。我不能简单地把刚生成的ID在一个$ var,把所有的MySQL命令$ var。

让我详细说明:这里有3种可能的方法:

>在上面的代码中。这个

这一切都在MySQL,和

LAST_INSERT_ID()在第二个

语句将自动为

autoincrement-column的值

插入在第一个

声明。

不幸的是,当第二个语句本身在具有自动增长列的表中插入行时,LAST_INSERT_ID()将被更新为表2,而不是表1.如果您之后还需要表1,以将其存储在变量中。这导致我们的方式2和3:

>将库存LAST_INSERT_ID()

一个MySQL变量:

INSERT ...

SELECT LAST_INSERT_ID() INTO @mysql_variable_here;

INSERT INTO table2 (@mysql_variable_here, ...);

INSERT INTO table3 (@mysql_variable_here, ...);

>将LAST_INSERT_ID()存储在a

php变量(或任何语言

可以连接到您的数据库

选择):

>插入…

>使用您的语言来检索LAST_INSERT_ID(),通过在MySQL中执行该文字语句,或使用例如php的mysql_insert_id()

> INSERT [use your php variable here]

警告

无论如何解决这个你选择,你必须决定应该发生什么,如果执行在查询之间中断(例如,你的数据库服务器崩溃)。如果你可以生活在“一些已经完成,其他人不”,不要阅读。

然而,如果你决定“或者所有的查询完成,或者没有完成 – 我不想在某些表中的行,但在其他的没有匹配的行,我总是希望我的数据库表是一致的”,你需要包装所有语句在事务中。这就是为什么我在这里使用BEGIN和COMMIT。

如果您需要更多信息,请再次注释:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值