2

我想知道我该怎么做以下。

假设用户在提供的评论框中为某篇文章发表评论。我想使用 varchar(size) 类型将用户评论存储到 MySQL DB 中。如果我创建的表varchar(100)和用户评论超过 100 个字符,我该如何适应这些情况?

因为我不想限制它的评论大小(考虑到这是体面的大小)。解决方案是否基于在插入之前计算评论的长度......?假设 PHP 脚本用于处理评论。

谢谢你

4

3 回答 3

3

您可以将文本数据类型用于注释。但是如果你想限制用户输入一些字符,你应该考虑限制你的 HTML 控件(文本框、输入等)中的输入数据。让用户知道可以输入多少个字符,并将最大字符大小设置为数据库中针对评论字段设置的字符。

例如,您可以在 HTML 中的输入类型上使用 maxlenght 属性

<input type="text" name="textboxname" maxlength="400" />
于 2013-01-11T04:34:20.400 回答
1

请改用text字段。自 5.0.3+ 起,varchar 被限制为最多 64k 个字符。文本可以更高一些。

事先计算注释的大小是没有意义的,因为alter table如果当前字段大小太小,您必须在插入长注释之前进行操作。小/少记录表没什么大不了的。但是随着表的增长,alter成为一个主要操作,并且会在表被修改时杀死你的服务器。您不会随心所欲地改变表格的布局。

使用文本,您可以插入从 0 到 n 字节的任意数量的文本,其中 n 是您选择的特定文本类型所允许的最大值。

于 2013-01-11T04:34:40.730 回答
0

除非您想动态运行 alter table SQL 命令(坏主意),否则您无法以这种方式进行调整。如果要将用户限制为 varchar 列的大小,则应设置表单输入以强制执行该限制。

一个更好的主意是使用一种 TEXT 数据类型。仍然会有大小限制,但会更大,远远超过 varchars 可用的最大值 255。超过最大允许大小的数据将被截断。TEXT 值的检索可能比 varchar 慢,但不一定。

您可以做的另一件事是拆分超过最大大小的注释并将每个部分存储为一行。然后,您需要重新组装这些部分以提供完整的评论。这将避免任何大小问题,需要最多的编程并且可能是最慢的。

于 2013-01-11T04:36:02.507 回答