我想要一个没有任何撇号,逗号或&符号的URL,并将其与数据库中可能包含其中一个字符的记录匹配.
例如:
mywebsite.com/bobs-big-boy
mywebsite.com/tom--jerry
mywebsite.com/one-two-three
Run Code Online (Sandbox Code Playgroud)
改写为
index.php?name=bobs-big-boy
index.php?name=tom--jerry
index.php?name=bobs-big-boy
Run Code Online (Sandbox Code Playgroud)
然后在php中我想使用$ _GET ['name']来匹配记录
bob's big boy
tom & jerry
one, two, three
Run Code Online (Sandbox Code Playgroud)
现在我的查询如下所示:
"SELECT * from the_records WHERE name=$NAME";
Run Code Online (Sandbox Code Playgroud)
我不能改变记录,因为它们是商业名称.有没有办法可以编写查询来忽略数据库中的&符号,逗号和撇号?
是的,你可以,但我很确定它会忽略你在列上的任何索引.而且令人作呕.
就像是
SELECT * FROM the_records
WHERE replace(replace(replace(name, '''', ''), ',', ''), '&', '') = $NAME
Run Code Online (Sandbox Code Playgroud)
顺便说一下,像这样获取一个get变量并将其注入到mysql查询中对于sql注入来说已经很成熟了.
pg,我知道你说你不能更改/更新你选择的数据库中的内容,但有什么事情阻止你在另一个你有写入权限的数据库中创建一个表吗?你可以只创建一个urlnames到商业名称的地图,它只会在你第一次使用replace方法时变慢.