在客户结帐后,我无法将客户及其订单添加到订单表中。
这是我用于创建我正在使用的四个表的 SQL:
CREATE TABLE IF NOT EXISTS Product(
ID int NOT NULL AUTO_INCREMENT,
Name varchar(255) NOT NULL,
Description text(65535) NOT NULL,
Quantity int NOT NULL,
Photo varchar(255),
Price float NOT NULL,
Category varchar(50),
PRIMARY KEY (ID)
) ENGINE=innoDB;
CREATE TABLE IF NOT EXISTS Customer(
ID int NOT NULL AUTO_INCREMENT,
FirstName varchar(255) NOT NULL,
LastName varchar(255) NOT NULL,
Email varchar(255) NOT NULL,
PhoneNumber varchar(11) NOT NULL,
Address varchar(50),
Town varchar(50),
County varchar(50),
PostCode varchar(50),
PRIMARY KEY (ID)
) ENGINE=innoDB;
CREATE TABLE IF NOT EXISTS OrderTable(
ID int NOT NULL AUTO_INCREMENT,
Date date NOT NULL,
PRIMARY KEY (ID),
TotalPrice float NOT NULL,
Customer_ID int NOT NULL,
CONSTRAINT fk_Order_1
FOREIGN KEY (Customer_ID)
REFERENCES coursework_db.Customer (ID)
) ENGINE=innoDB;
CREATE TABLE IF NOT EXISTS OrderItem(
ID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID),
Product_ID int NOT NULL,
Order_ID int NOT NULL,
Quantity int NOT NULL,
TotalPrice float NOT NULL,
CONSTRAINT fk_OrderItem_1
FOREIGN KEY (Product_ID)
REFERENCES coursework_db.Product(ID),
CONSTRAINT fk_OrderItem_2
FOREIGN KEY (Order_ID)
REFERENCES coursework_db.OrderTable(ID)
) ENGINE=innoDB;
我遇到的问题是,一旦将客户添加到数据库中以用作 OrderTable
表中的外键,如何从表中选择客户。
目前,我将客户的详细信息存储在本地存储中,可以轻松访问,但一旦将客户添加到数据库中,他们将获得一个 ID。这是我能想到的选择独特客户的唯一方法。
最佳答案
首先插入客户详细信息。然后获取新插入的客户的ID并在插入订单详细信息时使用它!
您可以使用LAST_INSERT_ID()将用户详细信息插入数据库以获取客户的 ID 后。
或者如果您使用 PHP,则:
- 如果您使用 PDO,请使用 PDO::lastInsertId
- 如果您使用 Mysqli,请使用 mysqli::$insert_id
希望这有帮助。
关于mysql - 从表单获取客户详细信息时如何将客户添加到订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902597/