在MySQL数据库中存储&(和)的最佳方法

9

我正在构建一个分类列表,不确定如何在MySQL数据库中存储“&”符号。如果我使用'&',是否会有任何问题/不利影响?与在HTML格式中使用'&amp'有什么区别吗?


1
请阅读此链接 - Mr. Alien
1
小修正:实体&应该以分号结束。 - halfer
5个回答

8
使用'&'可以节省一些字节。这不是MySQL的特殊字符。您可以轻松地使用PHP的方法htmlspecialchars()在输出时生成&。当您的字段旨在保留简单信息时,应仅使用纯文本,因为这通常更灵活,可以在以后生成不同种类的标记等。例外情况:标记由希望保存其布局决策的用户生成(例如富文本输入)。如果您的输入中有标记等,则可能希望出于一致性考虑使用&

我这样做有问题吗: $cat_name = 'Cars &amp Parts'; echo $cat_name; 或者必须这样做: $cat_name = htmlspecialchars($cat_name) ?谢谢您的回答。 - inrob
这并非强制要求。 htmlspecialchars() 也会处理引号和 <> 字符。如果您在HTML上下文中输出"Cars & Parts",浏览器将显示"&"代替 &amp;。同样,我可能不会将 &amp; 存储在数据库中。 - Chris
是的,我决定这样做。我将把它们存储为&。 谢谢您的回答。祝您有美好的一天。 - inrob

4
如果数据库中的字段包含HTML(如<span class="bold">some text</span> &amp; more),则应该将其仅存储为&amp;。在这种情况下,您应该非常注意XSS
如果字段包含一些通用数据(例如用户名、标题等),则只需要在将其放入HTML时进行转义(例如使用htmlentities)。

2
将其存储为&amp;是一种适当的方法。您可以使用&amp;在语句中输出它或使用它。

当我输出'&amp'时,它会显示为'&',还是需要使用一些PHP函数将其转换为'&'符号? - inrob
作为 PHP 的学习者,我建议你试一试。说实话,这是最好的学习方法。 - ryno
1
你可以选择逃避。 - ryno
是的,我试过了,它显示正确,我想我会像你和其他大多数人建议的那样使用&amp :) 感谢您的回答。 - inrob

2
我们经常将“&”存储到数据库字段中,这样做是可以的(至少我从未听过反对的论点)。
如果您只在HTML页面中使用字符串,那么您可以只存储HTML安全的“&amp;”版本。不过,我建议在读取时存储“&”并对其进行转义更好(以防将来需要在非HTML上下文中使用该字符串)。

1

如果您想要获得有效的HTML或避免问题,例如 cut&copy(浏览器将其显示为cut©),请使用&amp;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接