Php 同时向父表和子表插入数据

Php 同时向父表和子表插入数据,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,我这里有三张桌子 customer table ----------------------------- |customer_id | customer_Name | ----------------------------- product table ----------------------------- | product_id | event_Name | ----------------------------- reservation table -----------

我这里有三张桌子

 customer table
-----------------------------
|customer_id | customer_Name |
-----------------------------
product table
-----------------------------
| product_id | event_Name    |
-----------------------------
reservation table
----------------------------------------------------------------------
|reserve_id | customer_id | product_id | date_usage | motif | venue |
----------------------------------------------------------------------
问题是我想在父表的同时向reservation表插入数据。我将如何使用PHP实现这一点?我在网上搜索过,对使用存储过程很感兴趣,但我不知道如何使用存储过程。 我将如何使用php编写代码?提前谢谢

PHP代码:

$price2 = $_POST['price1'];
$pack2 = $_POST['pack1'];
$name = $_POST['textinput11'];
$motif = $_POST['textinput22'];
$venue = $_POST['textinput44'];
$event2 = $_POST['events1'];
$currentdate = date('Y/m/d');


$reserve = mysql_query("INSERT INTO reservation_info(Event_Motif,Event_Venue,Date_Subtmitted,Date_of_Usage) VALUES('$motif','$venue','$currentdate','$date2')");
$customer = mysql_query("INSERT INTO customer(CustomerName) VALUES('$name')");
$product  = mysql_query("INSERT INTO product_t(Event_Type,Price) VALUES('$event2','$price2')");


if($customer & $product & reserve){
    echo "You have successfully reserved";
}

您必须使用事务。算法如下所示:

  • 开始
  • 将行插入父表
  • 插入预订
  • 承诺
    事务保证您的命令将同时运行(使用简单的语言,跳过技术细节)

    问题在于insert语句的顺序。首先,您尝试在预订表(子表)中插入一行,但您还没有cudtomer_id

    将事务放在一边,首先插入customers表以创建您的客户。根据您的代码,我相信customer_id是一个自动递增字段。因此,在插入customer表调用函数以检索新创建的customer id之后

    然后对products表重复相同的操作

    最后,在reservations表中执行insert,但这次使用检索到的2个id在查询中明确提供客户和产品id

    注1:不要使用mysql扩展,它已被弃用。改用mysqli或PDO


    注2:您可以将上述插入封装到事务中。在生产代码中,我鼓励您这样做,如果只是为了学习,那么现在还不需要麻烦。

    您的问题还很不清楚,请告诉我们您想要实现的目标。从我得到的信息来看,你有一个特定的客户,他保留了一个产品。你为什么坚持同时做呢?为什么你不能在用户决定预订并在预订中插入记录的那一刻就直接获取客户和产品id?你应该开始两次插入,一次用于客户,一次用于预订。。假设是新客户。@AngelIliikov每当我将网页中的数据提交到数据库时,它只将数据保存在父表中,而不保存在子表中,因为存在外部关系。如何将数据同时插入父表和子表?@Shadow如何使用事务编码?@drandrebandal使用事务与否并不重要,关键是先将记录插入父表,然后插入子表。将您的php代码张贴在您尝试为新客户插入预订的位置。如果不知道谁进行了预订,您将如何插入预订?另一种方法是:首先将数据插入父表,然后插入子表。不幸的是,我不知道pdo的语法是什么,但当我应用您的步骤时,它使用php工作。谢谢您的时间,先生。Mysqli将是一个比PDO更直接的选择。