同时将数据插入父表和子表

时间:2015-10-19 13:20:26

标签: php mysql stored-procedures

我这里有三张桌子

 customer table
-----------------------------
|customer_id | customer_Name |
-----------------------------
product table
-----------------------------
| product_id | event_Name    |
-----------------------------
reservation table
----------------------------------------------------------------------
|reserve_id | customer_id | product_id | date_usage | motif | venue |
----------------------------------------------------------------------

问题是我想与父表同时向预订表插入数据。我将如何使用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";
}

2 个答案:

答案 0 :(得分:0)

您必须使用交易。算法看起来像:

  1. BEGIN;
  2. 将行插入父表
  3. 插入预订
  4. COMMIT;
  5. 事务保证您的命令将同时运行(使用简单的语言,跳过技术细节)

答案 1 :(得分:0)

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

除了设置交易外,首先插入到customers表中以创建客户。基于您的代码,我相信customer_id是一个自动增量字段。因此,在插入customer表后调用mysql_insert_id()函数来检索新创建的客户ID。

然后在产品表中重复相同的操作。

最后,在预订表中执行插入操作,但这次使用您检索到的2个ID,以便在查询中提供客户和产品ID。

注意1:不要使用mysql扩展名,不推荐使用。请改用mysqli或PDO。

注意2:您可以将上述插入封装到事务中。在生产代码中,我鼓励你这样做,如果只是为了学习,那么就不用再费心了。