我想在你面前提出以下问题。
数据库包含各种名称。这些名称可以包含“特殊”字符,如é,ê&一样。
我的计划是拥有一个包含数据库名称的SEO友好URL。创建链接不是一个大问题,只需使用normalize函数或str_replace函数将所有特殊字符替换为普通字符。
但是当我想使用SEO朋友URL查询数据库时(在必要的验证和检查之后)。由于特殊字符,DB ofcourse不会返回任何结果。
现在问题是,有没有办法在没有特殊字符的情况下查询数据库,或者最好在数据库中有一个单独的列,我在那里存储没有特殊字符的名称(在此期间不需要清除它们)创建链接,易于查询)。这将需要维护两列,但允许我轻松查询数据库。
有什么想法吗?
答案 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。