如何将重写的 url 字符串与连字符匹配到 MYSQL 中可能有 1 个连字符的字符串

How to match a rewritten url string with hyphens to string that might have 1 hyphen in MYSQL

看起来很基础,我正在使用 item_name 列重写带有连字符的 URL。例如 animals of the planet-v9http://example.com/book/animals-of-the-planet-v9str_replace(' ','-',$item_name)。我如何回到 mysql 是:

 $item_name = str_replace('-', ' ', $_GET['item_name']);
 SELECT * FROM table where item_name LIKE '% $item_name %'

"animals-of-the-planet -v9" 变为 "animals of the planet v9 "

URL: 示例。com/animals-of-the-planet-v9

以上查询匹配 0 个结果,我注意到任何包含连字符的列都不匹配,因为有时它需要一个原始连字符而不是字符串中重写的连字符。我还尝试在查询中使用 = 和 LIKE。我如何弄清楚我在哪里可以有一个非常简单的 URL 包含没有任何数字 ID 的连字符。请指教

试试这个,

$item_name = $_GET['item_name'];
SELECT * FROM table where REPLACE(item_name, ' ', '-') = '$item_name'

注意 - 在使用之前转义 $item_name。为了防止您的查询 mysql 注入。