我需要将运算符及其值存储到数据库中,因为在循环之后,我必须对价格计算进行比较。
这些值来自HTML表单,几乎没有问题,即:
问题:有多少项?
答案:<
(选择选项) 10
(文本框)
问题:什么时候?
答案:=
(选择选项) 2013-12-13
(文本框)
将这两个值存储到具有多个问题的表字段中的最佳方法是什么?
用PHP运算符和值序列化?
存储字符串< 10
或= 2013-12-13
?
如果您知道更好的技术,请告诉我。
我的MySQL表是
CREATE TABLE answers(
id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
answer_1 VARCHAR(50),
answer_2 VARCHAR(50),
answer_3 VARCHAR(50),
...
);
更新
我错过了帖子的一个重要部分,我更新了问题:我的表格是多个答案字段。
答案 0 :(得分:0)
这听起来像是mysql数据库的设计违背了良好的DBMS设计原则。
如果您在表单中有已知问题,则不要将所有问题的答案都放入通用答案字段中。
你肯定想存储&#34;小于/等于/ etc&#34;离散字段中的运算符,但您还希望将日期存储在日期字段中。和项目数量以适当的整数/数字表示。
根据您的问题,我没有足够的信息来了解您是否需要更复杂的数据结构(例如问题表等),但根据您提供的信息,您会想要更多类似的信息:
CREATE TABLE answers(
id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
modItems VARCHAR(4), // the greaterthan/lessthan for numItems
numItems INTEGER,
modDate VARCHAR(4), // the greaterthan/lessthan for dateDelivery,
dateDelivery DATETIME );
另外,查看您的用例,您可能希望更改生成数据的Web表单的结构。用户是否真的会说他们想要&#34;少于10件&#34;?我假设他们会知道(或估计)他们想要多少件物品。如果您最终根据商品数量向他们提供特殊处理/优惠/等等,请让他们选择您最终会使用的商品范围,即填充1-9件商品的选项列表/ 10-50项/ 51-100项等。
答案 1 :(得分:0)
将它们分开 - 如果它更像这样,你的表会看起来/效果更好:
CREATE TABLE answers(
`id` INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
`answer_id` INTEGER,
`operator` TEXT,
`value` TEXT,
UNIQUE KEY `answer` (`id`,`answer_id`)
);
(当然,请根据您的情况使用NOT NULL /更正列类型)
必须在插入数据之前以编程方式确定 answer_id
,但您已经为列名answer_1
/等执行此操作。