我需要编写代码以通过友好的 url 从数据库中获取数据。
我有一个表 company
,其中包含字段 title
用于存储有关公司的一些信息。我想使用友好的 url 按标题获取数据。例如。 example.com/company/aurum-1
。首先,我尝试将一些已定义的符号更改为 -
:
function seoUrl2CompanyName($string) {
$string = preg_replace("/[-ecsui]/","%",$string);
return $string."%";
}
[-ecsui]
被使用是因为我的母语有非标准符号,比如 šįėęų 我不能在我的友好 url 中使用,所以我尝试将它们更改为 %
并使用以下 mysql 按标题查找公司:
$SQL = "SELECT * FROM company
"WHERE title LIKE '".seoUrl2CompanyName($_GET['company'])."';
但是如果我使用这个逻辑,当 select 返回多行时我会遇到一些困难。例如
example.com/company/aurum -> seoUrl2CompanyName('aurum')-> a%r%m% -> like a%r%m% -> 24 rows in my table for match this pattern
我的目标是使用 url 中的数据创建最快的方法来按名称从公司表中查找公司。
最佳答案
我会接受@AgeDeO 的建议,但像这样扩展你的 SQL,你获取公司名称反射(reflect)的数据和你从你的 URL 获得的 ID:
$SQL = "SELECT *
FROM company
WHERE title LIKE '".seoUrl2CompanyName($_GET['company'])."'
AND ID = ".$myId.";
有了这 2 个因素,您应该只得到一行并且可以确定,没有人只是用 2 替换他的 1 并获得其他公司的数据。
关于php - 使用来自友好 url 的数据并使用正则表达式在 mysql 中获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539043/