2 回答
真的取决于您要存储的内容。对于诸如用户名、密码等...然后您可以使用 varchar。但是,如果您存储的是长文本,例如新闻文章或 html 数据,那么您可以使用 TEXT 或 LONG TEXT(取决于它的长度)。
插入数据库时,您应该始终使用 mysql_real_escape_string()。如果您从数据库中输出 HTML,您可能希望运行 htmlentities 或 html_specialchars 以确保您不会输出用户注入的 javascript,这可能会将您的用户重定向到黑客网站等。
另一种想法是,您可以在插入数据库之前使用 htmlentities 转义数据,但这是您的选择。
NL2BR 非常适合强制所有 \r\n
标记。
所以,看起来你在正确的轨道上......
TEXT
或TINYTEXT
任何类似的东西都可以用于存储来自用户的 ASCII 数据。如果你不需要很多空间,你可以考虑VARCHAR
我认为mysql_real_escape_string()
转义字符可能会危及 SQL 查询的安全性(单引号、双引号等),但仅此而已。
htmlentities()
将保留的 html 字符(如 < 和 >)转换为它们的 html 编码等效字符 < 和> 分别。这些字符对于 SQL 查询并不危险,因此您可能不需要转义它们,除非您想将用户输入的 HTML 标记显示为文本,并且不让它被解释为 HTML。
NL2BR()
可能也没有必要。
最重要的是,您决定何时使用这些功能将取决于您的最终应用程序。您可能需要/想要一些但不是其他的(尽管您绝对应该使用mysql_real_escape_string()
)