我需要找出从db中选择记录的最佳方法,该字符串与db中的字符串不完全匹配。
存储在db中的那个是:
So-Fi (S. 1st St. District), 78704 (South Austin), Bouldin Creek, South Congress
我要匹配的是:
$myArea = 'So-Fi-S-1st-St-District-78704-South-Austin-Bouldin-Creek-South-Congress';
$ myArea实际上是从db获取的值,并在不同的页面上为SEO友好的URL格式化。
我试过
SELECT* FROM t1 WHERE area = REPLACE('".$myArea."', '-', '')
但显然没有比赛。基本上,因为我无法驯服$ myArea并将其格式化回db中的内容。
有没有办法删除所有标点符号,这样在选择之前只留下db中的字母数字?
答案 0 :(得分:1)
执行这样的查找会让您感到头痛,有许多特殊情况您无法承保。
为什么不添加" slug"字段到您的数据库,您在其中放置SEO友好字符串。这样你就可以直接查看slug而无需进行大量的字符串操作。
数据库表示例:
CREATE TABLE `locations` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`slug` varchar(255) NOT NULL,
`location` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
然后你做这样的查找:
SELECT location from locations where slug = :slug;