簡體   English   中英

同時將數據插入父表和子表

[英]insert data to parent and child table at the same time

我這里有三張桌子

 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";
}

您必須使用交易。 算法如下:

  1. 開始;
  2. 將行插入父表
  3. 插入預訂
  4. 承諾;

事務保證您的命令將同時運行(以一種簡單的語言,跳過技術細節)

問題出在插入語句的順序上。 首先,您嘗試在保留表(即子表)中插入一行,但是還沒有cudtomer_id。

將事務擱置一旁,首先將其插入客戶表以創建您的客戶。 根據您的代碼,我相信customer_id是一個自動遞增字段。 因此,在插入客戶表之后,調用mysql_insert_id()函數以檢索新創建的客戶ID。

然后在產品表中重復同樣的操作。

最后,執行對保留表的插入,但是這次使用您檢索的2個ID在查詢中顯式提供客戶和產品ID。

注意1:不使用mysql擴展名,已棄用。 改用mysqli或PDO。

注意2:您可以將上述插入內容封裝到事務中。 在生產代碼中,我鼓勵您這樣做,如果只是為了學習,那么現在還不需要打擾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM