如何将多个类似值保存到一个SQL记录

kra*_*tos 0 php sql database

这是我的问题...我正在创建一个客户端管理界面,将值保存到SQL我正在使用SQL/PHP/HTML/JQUERY/CSS等...

当我为每个客户输入一次所有信息时,一切都很好.即.每个客户有1个或2个电话号码,一个地址等.

当我想存储多个客户的收据号码时,会出现问题.或者即.同一客户的多个订单.

我可以从一开始,但随着时间的推移,我可能需要存储100.

这样做的最佳做法是什么?

我想把用逗号分隔的ID存储在SQL中的单个文本记录中然后检索这些值,将它们分开并提供它们.

做这种事的最好方法是什么?另外,如何命令SQL将值添加到现有字符串的末尾而不是更新它?每次需要类似的记录时,我可以自动为sql添加一列吗?

Rus*_*rke 5

您可以将其保存为逗号分隔值,但这是非常糟糕的做法,最终会变得很难维护.

您需要具备的是SQL规范化.

例如,在收据的情况下,您有两个表,一个用于客户,一个具有唯一的ID字段,另一个用于收据,其中包含两列,即客户ID和收据编号,因此您的客户详细信息的表格如下:

Customers:
CustomerId INT
Address TEXT
Email TEXT
Run Code Online (Sandbox Code Playgroud)

还有另一张收据表:

Receipts:
CustomerID INT
ReceiptNum VARCHAR(9)
Run Code Online (Sandbox Code Playgroud)

然后获得该客户的所有收据,

SELECT *
FROM Receipts
WHERE CustomerID = @ID
Run Code Online (Sandbox Code Playgroud)

并添加新收据:

INSERT INTO Receipts (CustomerId, ReceiptNum)
VALUES (@ID, @Receipt)
Run Code Online (Sandbox Code Playgroud)

这是一个非常宽松的描述,但我希望它能让您了解您需要做什么.

更新:

如果您在Customer表中有2个客户,那么为了给您一个示例:

CustomerId   Address  Email
1            Here     test@test.com
2            There    test2@test.com
Run Code Online (Sandbox Code Playgroud)

客户1有2个收据,客户2有3个收据:

CustomerId   ReceiptNum
1            abcdde10
1            qwerty10
2            1234-1234
2            0987-0987
2            abcd-efgh
Run Code Online (Sandbox Code Playgroud)

因此,我们的想法是,对于每一个额外的信息,您只需要添加另一行.这样,您可以为一个客户提供1位信息,为另一个客户提供20位信息,但为了以防万一,您无需定义20个备用字段.