1

我有一个书名数据库。

我根据页面 URL 中的查询字符串查询数据库。

例如,如果有一本书名为“Mike's Book”,则查询字符串将为“mikes-book”。在将变量传递给 MYSQL 查询之前,我执行了一些基本的清理工作,将“mikes-book”变成了“Mikes Book”。

查询失败,因为查询字符串不包含与数据库记录匹配的撇号。

现在,我正在使用这个查询:

"SELECT title FROM books WHERE title LIKE '$query_title'"

如果 DB 记录中不存在撇号,则正确返回记录。但是当 DB 记录中有撇号时,返回 0 个结果。

关于我可以在这里做什么的任何想法?

4

2 回答 2

1

出现问题的原因是您尝试反转有损转换(在创建 URL 时显然已删除 's)。解决此问题的一种简单方法是将转换后的值也保留在数据库中,然后查询该值(mikes-book)。更新名称时,也会同时更新转换后的值。

您还可以在 SQL 中重新实现转换函数并将每一行与转换后的值进行比较,但我强烈建议避免这样做。:-)

于 2013-01-06T16:10:28.523 回答
0

一种解决方案是使用SOUNDEX,但我认为这是一项昂贵的操作。

于 2013-01-06T16:17:09.183 回答