【问题标题】:MySQL - varchar/varchar2 size for user commentsMySQL - 用户评论的 varchar/varchar2 大小
【发布时间】:2013-01-11 04:29:59
【问题描述】:

我想知道如何执行以下操作。

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

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

谢谢你

【问题讨论】:

  • 我很确定 MySQL 服务器会截断该值。最好使用 text 类型,它会给你 2 ^ 16 个字符。此外,您可以使用tinytext,它将为您提供 2 ^ 8 个字符。
  • Text 是这样做的方式。加上为什么不限制用户的文本长度...
  • thx,我在想 varchar 是隐含的,但文字是有道理的。 :)

标签: php mysql sql


【解决方案1】:

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

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

<input type="text" name="textboxname" maxlength="400" />

【讨论】:

    【解决方案2】:

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

    事先计算评论的大小是没有意义的,因为如果当前字段太小,您必须在插入长评论之前执行alter table。小/少记录表没什么大不了的。但是随着表的增长,alter 成为 MAJOR 操作,并且会在表被修改时终止您的服务器。您确实会随心所欲地更改表格的布局。

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-10-30
        • 1970-01-01
        • 2023-03-08
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 2010-09-17
        • 2010-11-12
        相关资源
        最近更新 更多