我想知道如何做到以下几点。
让我们假设用户在提供的评论框中对文章发表评论。
我想使用varchar(size)类型将用户注释存储到MySQL DB中。
如果我使用varchar(100)
创建表并且用户注释超过100个字符,我该如何适应这些情况?
因为我不想限制其评论大小(考虑到体面的大小)。 解决方案是基于在插入之前计算评论的长度吗? 假设PHP脚本用于处理注释。
谢谢
答案 0 :(得分:3)
您可以使用文本数据类型进行评论。但是,如果要限制用户使用某些字符,则应考虑限制HTML控件中的输入数据(TextBox,输入等)。让用户知道可以输入多少个字符,并根据注释字段将最大字符大小设置为数据库中设置的字符大小。
例如,您可以在HTML
中使用输入类型的maxlenght属性<input type="text" name="textboxname" maxlength="400" />
答案 1 :(得分:1)
改为使用text
字段。从5.0.3+开始,varchar限制为最多64k个字符。文字可以更高一些。
事先计算评论的大小是没有意义的,因为如果当前字段的大小太小,你必须在插入那个长评论之前做alter table
。小/少记录表没什么大不了的。但随着表格的增长,alter
成为 MAJOR 操作,并且会在表格修改时终止您的服务器。你可以不改变表格的布局。
使用文本,您可以插入0到n个字节的任意数量的文本,其中n是您选择的特定文本类型允许的最大值。
答案 2 :(得分:0)
除非你想动态运行alter table SQL命令(坏主意),否则你无法以这种方式进行调整。如果要将用户限制为varchar列的大小,则应设置表单输入以强制执行该限制。
更好的想法是使用其中一种TEXT数据类型。仍然会有尺寸限制,但它会更大,远远超过可用于varchars的255最大值。超过最大允许大小的数据将被截断。检索TEXT值可能比varchar慢,但不一定。
您可以做的另一件事是拆分超过最大尺寸的注释并将每个部分存储为一行。然后,您需要重新组装这些部分以提供完整评论。这可以避免任何大小问题,需要最多的编程,可能是最慢的。