从数据库中选择和使用特殊字符的最佳方式

时间:2012-09-17 20:40:28

标签: php mysql seo

我想在你面前提出以下问题。

数据库包含各种名称。这些名称可以包含“特殊”字符,如é,ê&一样。

我的计划是拥有一个包含数据库名称的SEO友好URL。创建链接不是一个大问题,只需使用normalize函数或str_replace函数将所有特殊字符替换为普通字符。

但是当我想使用SEO朋友URL查询数据库时(在必要的验证和检查之后)。由于特殊字符,DB ofcourse不会返回任何结果。

现在问题是,有没有办法在没有特殊字符的情况下查询数据库,或者最好在数据库中有一个单独的列,我在那里存储没有特殊字符的名称(在此期间不需要清除它们)创建链接,易于查询)。这将需要维护两列,但允许我轻松查询数据库。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

根据排序规则hôtel将等于hotel

mysql> select 'hôtel' = 'hotel';
+--------------------+
| 'hôtel' = 'hotel'  |
+--------------------+
|                  1 |
+--------------------+

你遇到的问题是你存储了html实体(hôtel),我认为这是非常错误的,因为你正在混淆演示问题和持久性问题。摆脱它并为您的charset选择足够的排序规则,然后将其设为数据库默认值或set it for each query

适合网络使用的字符集为utf8。要set the database向上执行:

create database mydatabase character set utf8 collate utf8_unicode_ci;

答案 1 :(得分:0)

简单的方法是在URL中添加ID,例如来自Stackoverflow的URL。