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

如何将重写的带有连字符的url字符串与MYSQL中可能有1个连字符的字符串相匹配,mysql,hyphen,Mysql,Hyphen,看起来很基本,我正在使用item\u name列用连字符重写URL。例如星球上的动物-v9到http://example.com/book/animals-of-the-planet-v9带有str\u replace(“,”,$item\u name)。我是如何回到mysql的: “星球上的动物”-v9“变成了“星球上的动物”v9” URL:example.com/anies-of-the-planet-v9 上面的查询匹配0个结果,我注意到任何包含连字符的列都不匹配,因为有时它需要一个原始

看起来很基本,我正在使用
item\u name
列用连字符重写URL。例如
星球上的动物-v9
http://example.com/book/animals-of-the-planet-v9
带有
str\u replace(“,”,$item\u name)
。我是如何回到mysql的:

“星球上的动物”-v9“变成了“星球上的动物”v9

URL:example.com/anies-of-the-planet-v9

上面的查询匹配0个结果,我注意到任何包含连字符的列都不匹配,因为有时它需要一个原始连字符,而不是字符串中重写的连字符。我还在query中尝试了使用=和LIKE。我怎么知道我可以有一个非常简单的URL,其中包含连字符,没有任何数字ID。请告知。

试试这个

$item_name = $_GET['item_name'];
SELECT * FROM table where REPLACE(item_name, ' ', '-') = '$item_name'
注意-在使用$item_名称之前将其转义。要防止您的查询被mysql注入。

请尝试以下操作

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

注意-在使用$item_名称之前将其转义。防止您的查询被mysql注入。

请显示示例输入和输出URL。我更新了问题。这很简单。Mysql值包含1个连字符a b c d e-f。使用连字符*a-b-c-d-e-f创建段塞后,我从url段塞a b c d e f中再次删除所有连字符,该段塞a b c d e f也删除了f之前的一个原始连字符。那应该是和那列相匹配的。当它删除所有连字符时,它与值不匹配。不清楚您在问什么。请显示示例输入和输出URL。我更新了问题。这很简单。Mysql值包含1个连字符a b c d e-f。使用连字符*a-b-c-d-e-f创建段塞后,我从url段塞a b c d e f中再次删除所有连字符,该段塞a b c d e f也删除了f之前的一个原始连字符。那应该是和那列相匹配的。当它删除所有连字符时,它与值不匹配。不清楚你在问什么。实际上,
星球上的动物-v9
在mysql中是真正的值。重写后,它变成了
星球动物-v9
,现在我在PHP中用$\u GET方法将它取回,替换了所有连字符,现在它变成了
星球动物-v9
,注意
v9
之前的一个连字符也被删除了,这需要再次匹配原始字符串。@Ranaharon,Query it self将项目名称转换为
星球动物-v9
,然后再与
$item\u name
匹配。试一下代码。我给了它一次尝试,它实际上需要再次使用“星球动物-v9”。但是在用str_replace()替换slug中的连字符之后它还删除了v9之前所需的连字符。@RanaHaroon,我没有替换原来的slug,我只是按原样使用slug,请查看代码。
$item\u name=$\u GET['item\u name']
这意味着$item_名称将是
星球动物-v9
,查询将在匹配之前替换所有项目名称。我知道了。但是查询将替换所有连字符。但在v9之前仍然需要1个连字符进行匹配。实际上,
星球动物-v9
在mysql中是真实的值。重写后,它变成了
星球动物--planet-v9
现在我在PHP中用$\u GET方法重新获得了它,替换了所有连字符,现在它变成了
行星v9的动物
注意,
v9
之前的一个连字符也被删除了,这是匹配原始字符串所必需的。@ranaharon,Query-it-self会将项目名称转换为
animates-of-the-planet-v9
在与
$item\u name
匹配之前。请尝试一下该代码。我尝试过,它实际上需要再次使用“星球动物-v9”。但是在用str_replace()替换slug中的连字符之后,它还删除了v9之前需要的一个连字符。我需要这个技巧。@RanaHaroon,我没有替换原来的slug,我只是按原样使用slug。请查看代码<代码>$item\u name=$\u GET['item\u name']这意味着$item_名称将是
anies-of-the-planet-v9
,查询将在匹配之前替换所有项目名称。我知道了。但查询将替换所有连字符。但在v9之前仍然需要1个连字符进行匹配。