2017-09-24 52 views
0

你好stackoverflowers,試圖鏈接產品從PHP會話訂單(ID)

我很新的PHP,SQL和我目前正在創建一個自制的訂貨系統。該系統由一個「購物車」組成,其內容我想鏈接到一個訂單。我已經想好了以下2個表:

訂單

  • ORDER_ID
  • order_bag
  • order_cash

ORDER_PRODUCTS

  • order_product_id
  • ORDER_ID
  • order_quantity

由於1級可以由多個產品,我試圖將它們與 'ORDER_ID' 鏈接。現在的問題是,我沒有線索如何在我的代碼中。我已經嘗試了很多疑問,但我似乎無法將兩者聯繫在一起。購物車中的所有產品都存儲在一個php會話中。

查詢插入訂單編號: INSERT INTO訂單(order_bag,order_cash)VALUES( '$袋', '$現金')

由於ORDER_ID自動遞增,我還沒有在聲明中填充它,但是每個訂單都會創建一個新的order_id。我如何確保在第二條語句中使用此訂單,我將購物車中的所有產品存儲在ORDER_PRODUCTS表中?我似乎無法立即使用order_id,因爲它尚未填入ORDERS表中。將產品的

查詢: INSERT INTO Orders_Products(ORDER_ID,order_quantity)VALUES( '$ ORDER_ID', '$ product_qty')「);

任何提示或其他幫助是極大的讚賞

。有一個愉快的一天!

回答

0

你可以做這樣的事情。

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "INSERT INTO Orders (order_bag, order_cash) VALUES ('$bag','$cash')"; 

if ($conn->query($sql) === TRUE) { 
    $order_id = $conn->insert_id; 
} 
0

我只是想給你的基本想法。至於我未derstand,您正試圖保存訂單詳情以及產品ID。首先,無論您何時一次插入多個表,請始終使用transactions,以便在任何查詢後發生任何錯誤時,都會回滾數據。

現在,明白你有購物車的細節,所以保持該數組並開始交易並插入訂單明細(計算總帳單等)。使用LAST_INSERT_ID或$connection->insert_id獲取訂單ID。現在運行第二組查詢。生成一個查詢以在您的order_products表中插入多行。以正常方式插入並提交事務。

第一個表格將作爲主表格,它包含訂單的元數據。第二個表將使用order_id作爲外鍵,並創建order_idproduct_id之間的關係。 order_products表不需要自動增量鍵。只需製作一個組合密鑰order_idproduct_id