php - 使用来自友好 url 的数据并使用正则表达式在 mysql 中获取行

标签 php mysql regex

我需要编写代码以通过友好的 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/

相关文章:

php - php5 和 httpd 的奇怪问题

regex - 如何在 REGEX 表达式中间包含一个子字符串(除了精确的子字符串)?

Java split 在结果中返回空格

java - 完成一些搜索逻辑

javascript - 保留具有相同名称的多个复选框的复选框状态

php - .htaccess 内部重定向不适用于子文件夹

java - MySQL 字段类型

php - 在 symfony 中设置默认时区

javascript - 客户端和服务器端编程有什么区别?

php - 如何将同一个订单号的产品价格相加?在 codeigniter 中加入查询