在MySQL中存储数据的最佳途径是什么。我应该使用MySQL,TEXT作为我的字段类型吗?
当使用带有返回值\ r \ n的mysql_real_escape_string()时也是如此。 但是之后我应该在它上面运行htmlentities()吗?
然后当我将数据返回到屏幕时我应该使用NL2BR()?
试图找出存储此信息的最佳路线。
感谢您的帮助!
答案 0 :(得分:0)
真的取决于你想要存储的内容。对于诸如用户名,密码等的东西......那么你可以使用varchar。但是如果您存储长文本,例如新闻帖子或html数据,那么您可以使用TEXT或LONG TEXT(取决于它的长度)。
插入数据库时,您应该始终使用mysql_real_escape_string()。如果您从数据库输出HTML,您可能想运行htmlentities或html_specialchars以确保您没有输出用户注入的javascript,可以将您的用户重定向到黑客网站等。
另一个想法是,您可以在插入数据库之前使用htmlentities转义数据,但这是您的选择。
NL2BR非常适合将所有\ r \ n强制转换为<
。
所以,好像你走在正确的轨道上......
答案 1 :(得分:0)
TEXT
或TINYTEXT
或类似的东西应该没问题。如果您不需要大量空间,可以考虑VARCHAR
我认为mysql_real_escape_string()
转义了可能危害SQL查询安全性的字符(单引号,双引号等),但没有做多少。
htmlentities()
转换保留的html字符,例如&lt;和&gt;进入他们的html编码等价物,&amp; lt;和&amp; gt;分别。这些字符对SQL查询没有危险,因此您可能不需要转义它们,除非您想要将用户输入的HTML标记显示为文本,而不是将其解释为HTML。
NL2BR()
可能也没有必要。
最重要的是,您决定何时使用这些功能取决于您的最终应用。您可能需要/想要一些但不需要其他人(尽管您绝对应该使用mysql_real_escape_string()
)