Php MYSQL将输入值存储在一行或多行中

Php MYSQL将输入值存储在一行或多行中,php,mysql,database,Php,Mysql,Database,我使用的是PHP和MySQL,对数据库设计没有太多经验。我知道规范化的基础知识,但是我的问题是如何从我拥有的特定表单存储值 好的,按照我的页面设置方式,可以动态添加或删除文本框。如果用户按下“+”或“-”按钮,则会添加或删除另一个文本框 无论如何,当我通过$\u POST提取文本框值时,它是一个数组,然后我使用内爆()将其转换为字符串。例如:用户输入“hello”“world”“bye”“world”,内爆将其转换为以下字符串“hello,world,bye,world” 我的问题是,将这个字符

我使用的是PHP和MySQL,对数据库设计没有太多经验。我知道规范化的基础知识,但是我的问题是如何从我拥有的特定表单存储值

好的,按照我的页面设置方式,可以动态添加或删除文本框。如果用户按下“+”或“-”按钮,则会添加或删除另一个文本框

无论如何,当我通过$\u POST提取文本框值时,它是一个数组,然后我使用内爆()将其转换为字符串。例如:用户输入“hello”“world”“bye”“world”,内爆将其转换为以下字符串“hello,world,bye,world”

我的问题是,将这个字符串“hello,world,bye,world”存储在一行中作为一个条目更好,还是将这个字符串拆分为4个单独的字符串并存储在4个不同的行中更好?每个文本框将包含问题/注释,因此它们可能很长,很可能不是我给出的示例中的一个单词


我之所以问这个问题,是因为所有这些输入都将在同一个页面上使用,因此它们都可以共享一个唯一的ID。我不需要多次查询,只需要查询一次。

它们应该单独存储,因为它们是一种数据的单独示例

您的表将是(例如)
comments
,每行应该是一条注释,因此一行用于
hello
,一行用于
world
,等等

您还可以在注释旁边存储一个页面ID,因此您的表看起来是这样的(请注意,注释ID通常也有一个
ID
字段。为了简洁起见,我省略了它):

然后,您仍然可以在page_id上搜索,但您的数据在逻辑上是分开的,如果您愿意,您可以在特定的注释上搜索

SELECT * FROM comments WHERE page_id = 1 -- 2 results
您还可以很容易地按字母顺序或按时间(使用新的列)排序

|--------------|---------|------------|
| comment      | page_id | time_made  |
|--------------|---------|------------|
| hello        | 1       | 1234567890 |
| world        | 1       | 2356480546 |
| bye          | 2       | 5168161543 |
|--------------|---------|------------|

SELECT * FROM comments WHERE page_id = 1 ORDER BY time_made DESC -- most recent first

最好将此字符串拆分为4个单独的字符串,并将其存储在单独子表的4个不同行中。

如果有人在其中一个字段中输入逗号,会发生什么情况?嗯,非常正确。我总是可以使用“~”或一些很少使用的字符(并限制其使用),但我将坚持使用单独的行方法。非常感谢提供的示例。我将在它们旁边存储一个ID,这样我就可以像你建议的那样将其引用到该页面。
|--------------|---------|------------|
| comment      | page_id | time_made  |
|--------------|---------|------------|
| hello        | 1       | 1234567890 |
| world        | 1       | 2356480546 |
| bye          | 2       | 5168161543 |
|--------------|---------|------------|

SELECT * FROM comments WHERE page_id = 1 ORDER BY time_made DESC -- most recent first