我正在尝试改进我的 MySQL 查询。
SELECT gamename
FROM giveaway
WHERE gamename LIKE '$query'
我得到了一个由 URL 组成的输入,这些 URL 的格式如下:
- http://www.steamgifts.com/giveaway/l7Jlj/plain-sight
- http://www.steamgifts.com/giveaway/okjzc/tex-murphy-martian-memorandum
- http://www.steamgifts.com/giveaway/RqIqD/flyn
- http://www.steamgifts.com/giveaway/FzJBC/penguins-arena-sednas-world
我从 URL 中获取游戏名称并将其用作 SQL 查询的输入。
- $query = "一目了然"
- $query = "tex 墨菲火星备忘录"
- $查询=“飞”
- $query = "企鹅竞技场 sednas 世界"
现在在数据库中,匹配的名称有时会包含更多字符,例如:'!等。
例子:
- “众目睽睽下”
- “特克斯墨菲:火星备忘录”
- “飞N”
- “企鹅竞技场:塞德娜的世界!”
因此,当输入从 URL 获取的名称时,这不会为第二个、第三个和第四个示例产生结果。所以我所做的是使用 % 字符。
- $query = "普通%sight"
- $query = "tex%murphy%martian%备忘录"
- $查询=“飞”
- $query = "企鹅%竞技场%sednas%world"
这现在给出了第一个和第二个例子的结果。
.
关于我的问题:
我的问题是,如何更好地改进这一点,以便第三和第四个也起作用?
我正在考虑在每个字符之前和之后添加额外的 % :
- $query = "%f%l%y%n%"
- $query = "%p%e%n%g%u%i%n%s%a%r%e%n%a%s%e%d%n%a%s%w%o%r%l %d%"
但我不确定这将如何提高性能,以及这是否是最好的解决方案。
添加 % 是一个好的解决方案吗?
有关如何进行良好工作查询的任何其他提示?
进步:
经过一番测试,我发现添加大量通配符 (%) 并不是一个好主意。你会从数据库中得到意想不到的结果,仅仅因为你刚刚添加了很多可以匹配的方法。
使用 slug 方法似乎是唯一的选择。