这是我的问题...我正在创建一个客户端管理界面,将值保存到SQL我正在使用SQL/PHP/HTML/JQUERY/CSS等...
当我为每个客户输入一次所有信息时,一切都很好.即.每个客户有1个或2个电话号码,一个地址等.
当我想存储多个客户的收据号码时,会出现问题.或者即.同一客户的多个订单.
我可以从一开始,但随着时间的推移,我可能需要存储100.
这样做的最佳做法是什么?
我想把用逗号分隔的ID存储在SQL中的单个文本记录中然后检索这些值,将它们分开并提供它们.
做这种事的最好方法是什么?另外,如何命令SQL将值添加到现有字符串的末尾而不是更新它?每次需要类似的记录时,我可以自动为sql添加一列吗?
您可以将其保存为逗号分隔值,但这是非常糟糕的做法,最终会变得很难维护.
您需要具备的是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个备用字段.