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

Posted

技术标签:

【中文标题】在 MySQL 数据库中存储 &(&) 的最佳方式【英文标题】:The best way to store &(Ampersand) in MySQL database 【发布时间】:2012-07-27 02:26:36 【问题描述】:

我正在构建一个类别列表,但我不确定如何存储与符号 在 mysql 数据库中。如果我使用'&',有什么问题/缺点吗?有什么区别吗 以 html 格式使用它'&amp'?

【问题讨论】:

阅读此link 小修正:实体&应该以分号结尾。 【参考方案1】:

使用 '&' 可以节省几个字节。它不是 MySQL 的 special character。您可以使用 php 的方法 htmlspecialchars() 轻松生成 & 以供稍后输出。当您的字段旨在保留简单信息时,您应该只使用纯文本,因为这通常更灵活,因为您可以稍后生成不同类型的标记等。例外:标记是由您想要与文本一起保存其布局决策的用户生成的(如在富文本输入中)。如果您的输入中有标签等,您可能需要使用& 以保持一致性。

【讨论】:

如果我这样做有什么问题吗:$cat_name = 'Cars &amp Parts';回声 $cat_name;或者必须这样做: $cat_name = htmlspecialchars($cat_name) ?谢谢你的回答。 这不是强制性的。 htmlspecialchars() 还负责引号和 <> 字符。如果您在 html 上下文中输出“Cars & Parts”,浏览器将为& 显示一个“&”。同样,我可能不会将& 存储在数据库中。 是的,我是这样决定的。我将它们存储为&。谢谢您的回答。祝你有美好的一天。【参考方案2】:

仅当数据库中的字段包含 HTML(如 <span class="bold">some text</span> & more)时,才应将其存储为 &。在这种情况下,您应该非常小心XSS。

如果该字段包含一些一般数据(如用户名、标题...等),您应该只在将其放入 HTML 时对其进行转义(例如使用 htmlentities)。

【讨论】:

【参考方案3】:

将其存储为& 是一种合适的方法。您可以回显它或在语句中使用它作为&

【讨论】:

当我回显 '&amp' 时,它会显示为 '&' 还是应该使用一些 php 函数将其转换为 '&' 符号? 作为php的小伙伴,建议你试试看。老实说,这是最好的学习方式。 如果你愿意,你可以逃跑。 是的,我试过了,它显示正确,我想我会按照你和其他大多数人的建议使用 &amp :) 谢谢你的回答。【参考方案4】:

我们一直将 '&' 存储到数据库字段中,这样做很好(至少我从未听说过其他方面的争论)。

如果您只在 HTML 页面中使用该字符串,您可以只存储 HTML 安全 & 版本,我想。我建议存储 '&' 并在阅读时将其转义会更好(以防您将来需要在非 HTML 上下文中使用该字符串)。

【讨论】:

【参考方案5】:

如果您想拥有有效的 HTML 或避免出现问题,请使用 &,例如 cut&copy(浏览器 shows it 为 cut©)。

【讨论】:

以上是关于在 MySQL 数据库中存储 &(&) 的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的目录结构 && Innodb的数据存储与MyIsam的存储

MySQL的目录结构 && Innodb的数据存储与MyIsam的存储

如何将 html 存储在 mysql 数据库中并将其作为 html 在 nodejs 应用程序中检索?

浅谈MySQL存储引擎-InnoDB&MyISAM

python开发mysql:mysql安装(windows)&密码找回&存储引擎简介&库表的增删改查

MySQL索引&存储引擎,从基础到性能测试和调优