如何同时对多个表使用插入查询?

Posted

技术标签:

【中文标题】如何同时对多个表使用插入查询?【英文标题】:How to use Insert query with multiple tables at a same time? 【发布时间】:2017-04-20 15:33:18 【问题描述】:

我有一个表格,比如说账单表格。我有 3 张桌子。

    bill (billId->主键) billdetails(billdetailId->主键,billId->外键) fintran(finalId -> 主键,form一共10个输入。

提交时,前 5 个输入应进入账单表,其他 5 个输入应进入账单详细信息。所有人都将进入决赛桌。我为此使用了以下查询。

BEGIN;
$sql = mysqli_query($conn,"INSERT INTO `bill`(`societyId`, `unitId`, `memberId`, `area`, `arrear`, `invoiceNumber`, `invoiceDate`, `dueDate`, `billingPeriod`, `total`, `interestOnArrear`, `totalDue`, `email`, `penalty`, `principalArrears`, `interestArrears`, `advancedAdjusted`, `netPending`) VALUES ('".$societyId."','".$unitId."','".$memberId."','".$area."','".$arrear."','".$invoiceNumber."','".$invoiceDate."','".$dueDate."','".$billingPeriod."','".$total."','".$interestOnArrear."','".$totalDue."','".$email."','".$penalty."','".$principalArrears."','".$interestArrears."','".$advancedAdjusted."','".$netPending."')");     
$memo = $_REQUEST['memo'];
$charge = $_REQUEST['charge'];
$sql= mysqli_query($conn,"INSERT INTO `billdetail`(`biilId`, `memo`, `charge`) VALUES (LAST_INSERT_ID(),'".$memo."','".$charge."')");
$sql= mysqli_query($conn,"INSERT INTO `fintran`(`societyId`, `docId`, `docTypeName`, `docDate`, `unitId`, `unitName`, `memberId`, `memberName`, `comboId`, `ledgerId`, `ledgerName`, `debit`, `credit`, `netValue`) VALUES ('".$societyId."',LAST_INSERT_ID(),'bill','','".$unitId."','".$unitId."','".$memberId."','".$memberId."','','".$charge."','','','','')");
COMMIT;

插入数据后,我想要billId,即billdetailsfintran 表中账单表的主键。但是通过这个查询,我只能在billdetail 表中得到它。在fintran 表中,我得到billdetail 表的主键。请帮助我。

【问题讨论】:

您的代码容易受到SQL injection attacks 的攻击。您应该使用mysqliPDO 准备好的语句和this post 中描述的绑定参数。 您也可以使用mysqli_insert_id()将其绑定到一个变量,以多次使用它。 ***.com/questions/5178697/… 在带有参数的过程中使用事务。 ***.com/questions/3053593/mysql-insert-into-2-tables 向您展示如何获取插入记录的 ID。 【参考方案1】:

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

检查这个:MySQL Insert into multiple tables? (Database normalization?)

【讨论】:

以上是关于如何同时对多个表使用插入查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用具有多个结果的子查询将值插入表中?

mysql查询一次在单个查询中在多个表中插入记录

如何把查询一个数据库表中的查询结果插入到另一个数据库表中(高分!)

如何在没有连接的情况下查询多个相关表,并使用 JDBC 获得一致的数据?

一个表里有多个字段需要同时使用字典表进行关联显示,如何写sql查询语句

sql语句进行模糊查询时如何同时用一句话筛选多个关键词